2016-03-29 10 views
0

Когда я используюпо умолчанию в 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)
означает, что он не дает идентификаторов пользователя. Мне нужны отобранные идентификаторы пользователя.

+0

'$ POST [«выбора»] 'меняется на что-то другое зрения генерируется HTML и найти точное имя или идентификатор для отправленных данных. –

+0

Пожалуйста, дайте свой вид код –

+0

$ DataProvider, 'filterModel' => $ searchModel, 'столбцов' => [ [ 'класс' => «юй \ сетки \ CheckboxColumn '], 'ID', [ 'атрибут'=> 'user_id', 'метка'=> 'User', 'значение'=> 'user.first_name', ], ], ]); ?> –

ответ

0

Я решил сам. Просто добавьте ключ в массиве DataProvider

$dataProvider = new ArrayDataProvider([ 
    'allModels' => $modelUser, 
    'Key' => 'id', 
    'pagination' => [ 
     'pageSize' => 50, 
    ], 
]);