如何在yii2中将控制器操作作为ajax运行

时间:2017-05-04 06:47:34

标签: yii2-advanced-app

我创建了一个名为“状态”的网格。在yii2高级应用程序中。 我在backend/views/status/index.php中添加了一个自定义按钮,该按钮正在工作并调用各自的控制器操作。

我的自定义如下:

[ '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

1 个答案:

答案 0 :(得分: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{
           ...
        }