2017-05-07 55 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