Когда я используюпо умолчанию в ArrayDataProvider
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
, а затем использовать эту DataProvider в GridView и получить выбранные строки в действии, как этот
if (Yii::$app->request->post()) {
$selectedUser = $_POST['selection'];
}
Он прекрасно работает и у меня есть массив идентификатор выбранного пользователя как этот массив ([0] => 5 [1] => 7), где 5 и 7 являются идентификаторами пользователя.
Но когда я использую некоторые условия в $ DataProvider как этот , например
$modelUser = User::find()
->where(['class' => $model->class_id])
->all();
$dataProvider = new ArrayDataProvider([
'allModels' => $modelUser,
'pagination' => [
'pageSize' => 50,
],
]);
И затем использовать этот поставщик в GridView, теперь в действии, когда я использую
if ($model->load(Yii::$app->request->post())) {
$selectedUsers = $_POST['selection'];
}
Это дает массив как этот массив ([0] => 0 [1] => 1 [2] => 2)
означает, что он не дает идентификаторов пользователя. Мне нужны отобранные идентификаторы пользователя.
'$ POST [«выбора»] 'меняется на что-то другое зрения генерируется HTML и найти точное имя или идентификатор для отправленных данных. –
Пожалуйста, дайте свой вид код –
= GridView :: виджет ([ 'DataProvider' => $ DataProvider, 'filterModel' => $ searchModel, 'столбцов' => [ [ 'класс' => «юй \ сетки \ CheckboxColumn '], 'ID', [ 'атрибут'=> 'user_id', 'метка'=> 'User', 'значение'=> 'user.first_name', ], ], ]); ?> –