更新期间未选中复选框列表。这是我的代码。
if(!$model->isNewRecord)
$list2 = ArrayHelper::map($tax_rule_group_shop->find()->where("id_tax_rules_group =".$model->id_tax_rules_group)->all(),'id_shop','id_shop');
else
$list2 = array();
$tax_rule_group_shop->id_shop = $list2;
$listdata=ArrayHelper::map(Shop::find()->all(),'id_shop','name'); ?>
<?= $form->field($tax_rule_group_shop, 'id_shop[]')->checkboxList($listdata,$list2)->label('Shops');?
此代码有什么问题?
如果我使用Chtml :: checkbox它可以正常工作,但通常验证不起作用。
<?= Html::checkboxList('id_shop', $list2, $listdata, ['itemOptions'=>['class' => 'test']]); ?>
答案 0 :(得分:0)
正如Nuriddin Rashidov回答的那样!$ model-&gt; isNewRecord应该是!$ tax_rule_group_shop-&gt; isNewRecord
for $ list2 use
ArrayHelper::getColumn($tax_rule_group_shop->find()
->where("id_tax_rules_group =".$model->id_tax_rules_group)->all(),
'id_shop')
我会将“where”重写为
where('id_tax_rules_group =:tid',[':tid'=&gt; $ model-&gt; id_tax_rules_group]) - &gt; all()
$ list2 in
$form->field($tax_rule_group_shop, 'id_shop[]')
->checkboxList($listdata,$list2)->label('Shops');
需要采用格式
'options' => [
'value1' => ['checked' => true],
'value2'=> ['checked' => true]
],