我创建了一个名为“状态”的网格。在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
?
答案 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{
...
}