2017-05-07 59 views
0

在我的yii2项目提交我有一个简单的复选框列gridview。Yii2 Grdiview复选框列通过表格

<?= 
GridView::widget([ 
    'id' => 'gridwithcheckboxes', 
    'dataProvider' => $dataProvider, 
    'columns' => [ 
     ['attribute' => 'a', 'value' => 'tabfora.a'], 
     ['attribute' => 'b', 'value' => 'tabforb.b'], 
     'user', 
     'mobile', 
     'description', 
     ['class' => 'yii\grid\CheckboxColumn'], 
    ], 
]); 

>

我知道我能得到的复选框值,通过这个js帮手:

var keys = $('#gridwithcheckboxes').yiiGridView('getSelectedRows'); 

有没有给他们传递一个表单提交到一个控制器的动作,而不是使用方法JavaScript的?

感谢您的帮助。

+0

我想你已经尝试'的var_dump(的Yii :: $ APP->请求 - >后());'在控制器 –

+0

您可以使用AJAX –

回答

0

我像这样解决了这个问题。

创建链接,在该链接中将添加您检查的行的id。

<a href="" class="btn btn-info" target="_blank" id="exampleButton" data-pjax=false>Button</a> 

然后在页面底部注册一个javascript动作,点击该复选框,您将更新链接的href。

<?php 
$this->registerJs(' 
$(document).on("ready pjax:success", function() { 
    $(".kv-row-checkbox").change(function(){ 
     var keys = $("#gridwithcheckboxes").yiiGridView("getSelectedRows"); 
     var keysJson = JSON.stringify(keys); 
     $("a[id=\"exampleButton\"]").attr("href", "name-of-action?keys="+keysJson); 
    }); 
    $(".select-on-check-all").change(function(){ 
     var keys = $("#gridwithcheckboxes").yiiGridView("getSelectedRows"); 
     var keysJson = JSON.stringify(keys); 
     $("a[id=\"exampleButton\"]").attr("href", "name-of-action?keys="+keysJson); 
    }); 
}); 
',View::POS_READY); 
?> 

.kv-行复选框和。选择上检查,都是复选框的类,你必须检查你的不同。

在控制器

public function actionNameOfAction($keys) 
{ 

     // decoding 
     $keys = json_decode($keys); 
     // Operation with ids 
     ...... 
} 
+0

喜通过这个值tigrasti,感谢您的回复,但我正在寻找一种不暗示使用js的方法。 – giovaZ