我有一个表格列表,用于定义的附件列表,比现有形式更简单,如下所示:
echo CHtml::activeCheckBox($accessory, 'bidirectional[]', array('checked'=>$accessory->bidirectional));
我以这种方式构建表单,以便我可以通过jQuery动态添加新行,而不必在所有元素中摆弄索引位置。
我得到的问题是activeCheckBox
为了在活动记录中设置0
而产生两个字段。当我来重建表单时,这会导致问题,因为我实际转换的元素有两个条目:
array(9) { ["bidirectional"]=> array(2) { [0]=> string(1) "0" [1]=> string(1) "1" } }
对于后者的条目,它拥有行,因此打破了我的所有编程。
无论如何,Yii中的表单列表都可以轻松完成动态索引,还是必须回到使用静态索引?
答案 0 :(得分:0)
默认情况下,yii activeCheckBox会生成隐藏输入,因此在提交表单值时始终会设置。在您的情况下,隐藏的输入会破坏索引。
要保持动态索引隐藏输入,应删除。缺点是你不再拥有“未经检查”的价值。要禁用取消选中值,只需将uncheckValue
设置为null
:
echo CHtml::activeCheckBox($accessory, 'bidirectional[]', array(
'checked'=>$accessory->bidirectional,
'uncheckValue' => null
));