2017-05-04 6 views
0

yii2-advanced 응용 프로그램에서 '상태'라는 표를 만들었습니다. backend/views/status/index.php에 사용자 지정 단추가 추가되었으며 각각의 컨트롤러 동작을 호출하고 있습니다. 다음과 같이yii2에서 컨트롤러 작업을 ajax로 실행하는 방법

나의 정의는 다음과 같습니다

[ 'class' => 'yii\grid\ActionColumn', 
    'template' => '{view} {update} {delete} {status/custom}', 
    'buttons' => [ 
     'status/custom' => function ($url) 
     { 
      return Html::a('Custom', $url, 
        [ 
         'title' => 'Custom', 
         'data-pjax' => '0', 
        ] 
        ); 

     }, 
    ], 
], 

가 지금은 컨트롤러 액션이 페이지 리디렉션 또는 부하없이 Ajax를 사용하여 호출이 될 것이라고합니다.

버튼에 아약스를 사용하여 actionCustom() (으)로 전화하는 법은 무엇입니까?

답변

0

모달을 사용하여 해결하십시오. 페이지 하단

use yii\bootstrap\Modal; 

use johnitvn\ajaxcrud\CrudAsset; 



Html::a('Custom', ['custom'], ['role'=>'modal-remote', 'title'=>'Custom']); 

... 컨트롤러의 액션 컨트롤러

use \yii\web\Response; 

에서

<?php Modal::begin([ 
    "id"=>"ajaxCrudModal", 
    "footer"=>"",// always need it for jquery plugin 
])?> 
<?php Modal::end(); ?> 

$request = Yii::$app->request; 

if($request->isAjax){ 
      /* 
      * Process for ajax request 
      */ 
      Yii::$app->response->format = Response::FORMAT_JSON; 
      if($request->isGet){ 
       return [ 
        'title'=> "Title", 
        'content'=>$this->renderAjax(' 
         'model' => $yourModel 
        ]), 
        'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]). 
           Html::button('Save',['class'=>'btn btn-primary','type'=>"submit"]) 

       ]; 
      }else if($model->load($request->post()) && $model->save()){ 


       return [ 
        'forceReload'=>'#crud-datatable-pjax', 
        'title'=> "Title", 
        'content'=>'<span class="text-success">Textspan>', 
        'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]). 
          Html::a('Create new',['create', 'id'=>$id],['class'=>'btn btn-primary','role'=>'modal-remote']) 

       ];   
      }else{   
      ...   
     }else{ 
      ... 
     }