在Zend Form Element Radio中使用负值导致html错误

时间:2011-01-10 06:30:38

标签: zend-framework label zend-form

$score = new Zend_Form_Element_Radio('score');
$score->setRequired(true)
    ->setSeparator('')
    ->setMultiOptions(array(1 =>'Positive', -1 =>'Negative'))
    ->setDecorators(array('ViewHelper'));

呈现为

<label for="score-1">
    <input name="score" id="score-1" value="1" checked="checked" type="radio">Positive
</label>
<label for="score-1">
    <input name="score" id="score-1" value="-1" type="radio">Negative
</label>

它是否使用相同的ID作为输入并标记正常行为或错误? 我怎么能纠正这个?
我无法改变这些值,因为从技术上讲,它们必须是这样的

这导致的真正问题是当您点击否定时,肯定会选择正面! 感谢

1 个答案:

答案 0 :(得分:1)

看起来无线电控件的标准ViewHelper装饰器使用FormRadio视图助手。当此视图助手创建它在&lt; input&gt;上使用的id时元素和&lt;标签&gt;元素,它首先应用标准AlNum过滤器,它会过滤掉你的减号。

因此,在我看来,您不必使用标准ViewRenderer装饰器,而是必须创建一个自定义装饰器来调用您自己的自定义FormRadio视图帮助器。

您可以通过创建自己的自定义AlNum过滤器来避免创建自己的装饰器和查看助手,这些过滤器允许使用这些减号。诀窍是只为这一次使用设置该路径,以便您能够将普通Alnum过滤器用于其他元素。

或者,您可以通过在视图对象上添加辅助路径来欺骗ViewHelper使用自定义FormRadio帮助程序,以便加载自定义视图助手而不是标准助手。

只是一些想法。