2017-05-04 31 views
0

我在yii2高級應用程序中創建了一個名爲'狀態'的網格。 我在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()使用ajax點擊Custom按鈕?

回答

0

使用模態來解決它。

use yii\bootstrap\Modal; 

use johnitvn\ajaxcrud\CrudAsset; 



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

在頁面底部..

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

在控制器

use \yii\web\Response; 

在控制器的動作

$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{ 
      ... 
     } 
相關問題