2017-05-04 10 views
0

yii2-advancedアプリケーションで「ステータス」というグリッドを作成しました。 私はbackend/views/status/index.phpにカスタムボタンを追加しました。これは動作していて、それぞれのコントローラアクションを呼び出しています。コントローラアクションをyii2でajaxとして実行する方法

私のカスタマイズ次のようにされています。今、私は、コントローラのアクションは、ページのリダイレクトや負荷なしに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', 
        ] 
        ); 

     }, 
    ], 
], 

actionCustom()アヤックスをクリックして電話する方法Customボタン?

答えて

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{ 
      ... 
     } 
関連する問題