yii2 gridview设置checkboxcolumn已选中

yii2 gridview设置checkboxcolumn已选中,gridview,checkbox,yii2,datagridviewcolumn,Gridview,Checkbox,Yii2,Datagridviewcolumn,我需要将机器分配给机器组(m:n)。机器的装载使得有必要使用带有checkboxcolumn的gridview将机器分配给组。我让它工作的关系得到保存,但我没有弄清楚如何使所有准备好分配的机器在加载时在gridview中进行检查。MyGridView的内容是一个基于MySQL视图的数据提供者。与 'checkboxOptions' => function($model, $key, $index, $column) { return ['checked' => true]

我需要将机器分配给机器组(m:n)。机器的装载使得有必要使用带有checkboxcolumn的gridview将机器分配给组。我让它工作的关系得到保存,但我没有弄清楚如何使所有准备好分配的机器在加载时在gridview中进行检查。MyGridView的内容是一个基于MySQL视图的数据提供者。与

 'checkboxOptions' => function($model, $key, $index, $column) {
     return ['checked' => true];
 }
可以选中所有复选框。但当我想这么做的时候

 'checkboxOptions' => function($model, $key, $index, $column) {
     $bool = in_array($model->id_machine, common\models\MachineGroup::getAssignedMachines());
     return ['checked' => $bool];
 }

抛出错误:“无法将yii\web\View类型的对象用作数组”。实际上,我不明白这里的问题是什么,但我找不到一种方法将allready selected机器的数组传递到这个函数(我做了很多尝试)。当我在函数中手动定义虚拟数组时,一切都正常。这里需要帮助…谢谢

正如我在注释中所写,在回调函数之外定义变量

$machines=common\models\MachineGroup::getAssignedMachines()

然后在回调函数中

function($model, $key, $index, $column) use ($machines) {
    $bool = in_array($model->id_machine, $machines); 
    return ['checked' => $bool];
}

正如我在评论中所写的,在回调之外定义变量

$machines=common\models\MachineGroup::getAssignedMachines()

然后在回调函数中

function($model, $key, $index, $column) use ($machines) {
    $bool = in_array($model->id_machine, $machines); 
    return ['checked' => $bool];
}

正如我在评论中所写的,在回调之外定义变量

$machines=common\models\MachineGroup::getAssignedMachines()

然后在回调函数中

function($model, $key, $index, $column) use ($machines) {
    $bool = in_array($model->id_machine, $machines); 
    return ['checked' => $bool];
}

正如我在评论中所写的,在回调之外定义变量

$machines=common\models\MachineGroup::getAssignedMachines()

然后在回调函数中

function($model, $key, $index, $column) use ($machines) {
    $bool = in_array($model->id_machine, $machines); 
    return ['checked' => $bool];
}

在Yi2 GridView中,您可以准备数据以签入checkboxcolumn,方法是使用关键字将变量用于匿名函数,并使用In_array()检查是否选中了正确的复选框。 这就是一个例子

//outside gridview prepare data list for check
$ar = [];
foreach(Model::find()->select(['id'])->asArray()->all() as $key => $val){
    $ar[] = $val['id'];
}

//..... inside checkbox column
    'checkboxOptions' => function($model, $key, $index, $column) use ($ar) {

             $bool = in_array($model->id, $ar);
             return ['checked' => $bool];
    }
//.....

在Yi2 GridView中,您可以准备数据以签入checkboxcolumn,方法是使用关键字将变量用于匿名函数,并使用In_array()检查是否选中了正确的复选框。 这就是一个例子

//outside gridview prepare data list for check
$ar = [];
foreach(Model::find()->select(['id'])->asArray()->all() as $key => $val){
    $ar[] = $val['id'];
}

//..... inside checkbox column
    'checkboxOptions' => function($model, $key, $index, $column) use ($ar) {

             $bool = in_array($model->id, $ar);
             return ['checked' => $bool];
    }
//.....

在Yi2 GridView中,您可以准备数据以签入checkboxcolumn,方法是使用关键字将变量用于匿名函数,并使用In_array()检查是否选中了正确的复选框。 这就是一个例子

//outside gridview prepare data list for check
$ar = [];
foreach(Model::find()->select(['id'])->asArray()->all() as $key => $val){
    $ar[] = $val['id'];
}

//..... inside checkbox column
    'checkboxOptions' => function($model, $key, $index, $column) use ($ar) {

             $bool = in_array($model->id, $ar);
             return ['checked' => $bool];
    }
//.....

在Yi2 GridView中,您可以准备数据以签入checkboxcolumn,方法是使用关键字将变量用于匿名函数,并使用In_array()检查是否选中了正确的复选框。 这就是一个例子

//outside gridview prepare data list for check
$ar = [];
foreach(Model::find()->select(['id'])->asArray()->all() as $key => $val){
    $ar[] = $val['id'];
}

//..... inside checkbox column
    'checkboxOptions' => function($model, $key, $index, $column) use ($ar) {

             $bool = in_array($model->id, $ar);
             return ['checked' => $bool];
    }
//.....


当错误发生时,在数组($model->id\u machine,common\models\MachineGroup::getAssignedMachines())中包含
$bool=的行在错误消息中突出显示?否…以下是错误消息:1。在C:\xampp\htdocs\eddb1\vendor\yiisoft\yii2\db\ActiveRelationTrait.php的第458行中,突出显示的一行是:“如果(($value=$model[$attribute])!==null){”可能在
common\models\MachineGroup::getAssignedMachines()
method?是否可以将其代码添加到问题中?出现错误时,在数组($model->id\u machine,common\models\MachineGroup::getAssignedMachines()中带有
$bool=的行
在错误消息中突出显示了吗?否…以下是错误消息:1.在C:\xampp\htdocs\eddb1\vendor\yiisoft\yii2\db\ActiveRelationTrait.php的第458行,突出显示的行是:“if(($value=$model[$attribute])!==null{”可能在
common\models\MachineGroup::getAssignedMachines()中有某些内容
method?是否可以将其代码添加到问题中?出现错误时,在数组($model->id\u machine,common\models\MachineGroup::getAssignedMachines()中带有
$bool=的行
在错误消息中突出显示了吗?否…以下是错误消息:1.在C:\xampp\htdocs\eddb1\vendor\yiisoft\yii2\db\ActiveRelationTrait.php的第458行,突出显示的行是:“if(($value=$model[$attribute])!==null{”可能在
common\models\MachineGroup::getAssignedMachines()中有某些内容
method?是否可以将其代码添加到问题中?出现错误时,在数组($model->id\u machine,common\models\MachineGroup::getAssignedMachines()中带有
$bool=的行
在错误消息中突出显示了吗?否…以下是错误消息:1.在C:\xampp\htdocs\eddb1\vendor\yiisoft\yii2\db\ActiveRelationTrait.php的第458行,突出显示的行是:“if(($value=$model[$attribute])!==null{”可能在
common\models\MachineGroup::getAssignedMachines()中有某些内容
method?你能将其代码添加到问题中吗?你好,托尼,你在吗?我发布了另一个关于的问题,但没有人能回答我的问题。请帮助,现在卡住了一周。感谢托尼提供此提示。正在搜索。你好,托尼,你在吗?我发布了另一个关于的问题,但没有人能回答我的问题上。请帮助,陷入困境一周。感谢Tony提供此提示。正在搜索。你好Tony,你在吗?我发布了另一个关于的问题,但没有人能回答我的问题。请帮助,陷入困境一周。感谢Tony提供此提示。正在搜索。你好Tony,你在吗?我发布了另一个关于的问题ng但没有人能回答我的问题。请帮助,现在被困了一个星期。感谢Tony提供此提示。正在搜索。Hi Manop Kongoon;您的代码可能是正确的,但在某些上下文中,它会给出更好的答案;例如,您可以解释此提议的更改如何以及为什么会解决提问者的问题,可能包括l参考相关文档。这将使其对他们更有用,也对正在寻找类似问题解决方案的其他网站读者更有用。Hi Manop Kongoon;您的代码可能是正确的,但在某些上下文中,它将提供更好的答案;例如,您可以解释此建议的更改将如何以及为什么解决此问题发问者的问题,可能包括相关文档的链接。这将使其对他们更有用,也对其他正在寻找类似问题解决方案的网站读者更有用。嗨