ArrayDataProvider 中的默认 id
default id in ArrayDataProvider
当我使用
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
然后在 gridview 中使用此数据提供程序并像这样在操作中获取选定的行
if (Yii::$app->request->post()) {
$selectedUser = $_POST['selection'];
}
它工作正常,我有这样的数组 ([0] => 5 [1] => 7),其中 5 和 7 是用户的 id。
但是当我像这样在 $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'];
}
它给出这样的数组 Array ( [0] => 0 [1] => 1 [2] => 2 )
意思是说它不提供用户的 ID。我需要选定的用户 ID。
我自己解决了。只需在数组数据提供者中添加一个键
$dataProvider = new ArrayDataProvider([
'allModels' => $modelUser,
'Key' => 'id',
'pagination' => [
'pageSize' => 50,
],
]);
当我使用
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
然后在 gridview 中使用此数据提供程序并像这样在操作中获取选定的行
if (Yii::$app->request->post()) {
$selectedUser = $_POST['selection'];
}
它工作正常,我有这样的数组 ([0] => 5 [1] => 7),其中 5 和 7 是用户的 id。
但是当我像这样在 $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'];
}
它给出这样的数组 Array ( [0] => 0 [1] => 1 [2] => 2 )
意思是说它不提供用户的 ID。我需要选定的用户 ID。
我自己解决了。只需在数组数据提供者中添加一个键
$dataProvider = new ArrayDataProvider([
'allModels' => $modelUser,
'Key' => 'id',
'pagination' => [
'pageSize' => 50,
],
]);