Yii2 Checkboxlist未在更新时检查

时间:2015-11-03 07:43:28

标签: php checkbox yii2 yii2-advanced-app

更新期间未选中复选框列表。这是我的代码。

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']]); ?>

1 个答案:

答案 0 :(得分:0)

  1. 正如Nuriddin Rashidov回答的那样!$ model-&gt; isNewRecord应该是!$ tax_rule_group_shop-&gt; isNewRecord

  2. for $ list2 use

    ArrayHelper::getColumn($tax_rule_group_shop->find()
    ->where("id_tax_rules_group =".$model->id_tax_rules_group)->all(),
    'id_shop')
    
  3. 我会将“where”重写为

    where('id_tax_rules_group =:tid',[':tid'=&gt; $ model-&gt; id_tax_rules_group]) - &gt; all()

  4. $ list2 in

    $form->field($tax_rule_group_shop, 'id_shop[]')
    ->checkboxList($listdata,$list2)->label('Shops'); 
    

    需要采用格式

    'options' => [
      'value1' => ['checked' => true],
      'value2'=> ['checked' => true]
    ],
    

    资源:checkboxList()activeCheckboxList()