2017-05-04 28 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{ 
      ... 
     } 
相关问题