$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作为输入并标记正常行为或错误?
我怎么能纠正这个?
我无法改变这些值,因为从技术上讲,它们必须是这样的
这导致的真正问题是当您点击否定时,肯定会选择正面! 感谢
答案 0 :(得分:1)
看起来无线电控件的标准ViewHelper
装饰器使用FormRadio
视图助手。当此视图助手创建它在&lt; input&gt;上使用的id时元素和&lt;标签&gt;元素,它首先应用标准AlNum
过滤器,它会过滤掉你的减号。
因此,在我看来,您不必使用标准ViewRenderer
装饰器,而是必须创建一个自定义装饰器来调用您自己的自定义FormRadio
视图帮助器。
您可以通过创建自己的自定义AlNum
过滤器来避免创建自己的装饰器和查看助手,这些过滤器允许使用这些减号。诀窍是只为这一次使用设置该路径,以便您能够将普通Alnum
过滤器用于其他元素。
或者,您可以通过在视图对象上添加辅助路径来欺骗ViewHelper
使用自定义FormRadio
帮助程序,以便加载自定义视图助手而不是标准助手。
只是一些想法。