gpt4 book ai didi

zend-framework - Zend 框架 : Setting up default values for part of the multicheckbox element options not possible

转载 作者:行者123 更新时间:2023-12-04 22:26:04 24 4
gpt4 key购买 nike

我写这个问题是因为我在为 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' 类型元素的数组,(例如 array( '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 (它不会一一获取所有元素选项)并为所有选项设置默认值,而不仅仅是数组中的给定值。

这就是我所看到的,我找不到如何仅为多复选框元素的某些选项设置默认值的解决方案。

最佳答案

Chris 是正确的, setValue() 期望“检查”一组值(不是由您的选项 ID 键控的 bool 值数组)。

如果您正在寻找表单生成背后的逻辑,请不要查看 Zend_Form_Element 对象(或其中的许多扩展元素),而应查看 Zend_View_Helper 对象。特别是 Zend_View_Helper_FormRadio 对象。

生成 HTML 时,options 数组被循环,然后根据值数组检查值 - 使用 setValue() 传递给 in_array() 的数组。

Zend_View_Helper_FormRadio 行:150

// is it checked?
$checked = '';
if (in_array($opt_value, $value)) {
$checked = ' checked="checked"';
}

不确定什么对你不起作用,但如果你通过了:
$element->setMultiOptions(array('1111' => 'Some Label', 
'2222' 'Some Other Label',
'3333', 'Not Selected Label'));

$element->setValue(array('1111','2222');

它应该工作。也许如果您可以包含一些代码,会更容易看到发生了什么?

关于zend-framework - Zend 框架 : Setting up default values for part of the multicheckbox element options not possible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com