【发布时间】:2009-09-29 15:16:09
【问题描述】:
我写这个问题是因为我很难为 Zend Framework 1.9.3 的 _MultiCheckbox 元素设置默认值。 我使用多个选项创建 Zend_Form_Element_MultiCheckbox,如下所示:
$multiCheckbox = new Zend_Form_Element_MultiCheckbox( 'elId',
array ( 'disableLoadDefaultDecorators' =>true ) );
$multiCheckbox ->setName( 'elId' )
->setLabel('elId')
->setRequired( false )
->setAttrib('class', 'inputtext')
->setDecorators( array( 'ViewHelper' ) )
->setMultiOptions( $options );
$options 数组是一个关联数组 'key' => 'value'。该字段显示得很好,我可以获得该元素的所有检查值。
返回该页面时,我需要再次从数据库中恢复整个选项列表并标记选中的选项。我试过这样做:
$multiCheckbox ->setValue( $defaults );
其中 $default 是数组,包含类型为 'checked_option_field_id' => true
(例如 array( '1222' => true, '1443' => true ) )的元素。
该操作检查所有复选框,不仅是我需要的一次,而且我已经传递给 setValue() 方法。
我试图只传递一个包含“checked_option_field_id”类型元素的数组,
(例如,数组(“1222”,“1443”))
但这也不起作用 - 没有选中任何复选框.
我已经对这两种数组使用了表单 setDefaults() 方法,但结果是相同的 - 因为该方法再次对每个元素使用 setValue()。
MultiCheckbox 元素是这样渲染的(尝试为一个选项设置检查值时的结果):
<label for="elId-1222"><input type="checkbox" name="elId[]" id="elId-1222" value="1222" checked="checked" class="inputtext">BoRoom </label><br /><label for="elId-1443"><input type="checkbox" name="elId[]" id="elId-1443" value="1443" checked="checked" class="inputtext">BoRoom Eng2 </label><br/>
该元素填充 elId[] 数组中选中的选项值。那是元素名称。 setDefaults() 表单方法按名称获取所有表单元素,并通过调用 setDefault() 表单方法和之后的 setValue() 元素方法提交它们的默认值。所以我的 multicheckbox 元素具有名称 elId (它不会一一获取所有元素选项)并为所有选项设置默认值,而不仅仅是数组中的给定值。
这就是我的看法,我找不到解决方案如何仅为多复选框元素的某些选项设置默认值。
【问题讨论】:
标签: zend-framework