我在Zend_Form中遇到了无线电元素的问题。
我有一个表单装饰器,就是这样:“
$this->setElementDecorators(array(
'Label',
'ViewHelper',
'Errors',
array('HtmlTag', array('tag' => 'div', 'class' => 'clearfix')),
));
它适用于除radiobuttons之外的表单中的所有元素。经过一些研究后,我发现input元素被放置在label标签内,而表单的其余部分只有setLabel方法中的文本。
有没有办法让它离开那里因为这会破坏我的布局,我无法弄清楚如何以正确的方式做到这一点。
答案 0 :(得分:0)
欢迎来到ZF装饰者,戴上头盔。对于想要开始使用ZF的人来说,我发现它们毫无用处,糟糕,垃圾,并且非常不吸引人。
但是,进入他们!编写自己的,覆盖Radio Buttons的默认值,让它适合你。如果没有ZF装饰器的知识,你将始终与表单的布局或使用jQuery重新定位元素,因为ZF装饰器没有按照他们想要的方式工作。
简而言之,阅读文档,编写自己的文档并开始享受它们。
答案 1 :(得分:0)
你可以在ZendRadio.php中更改它。转到第159行并将其更改为您喜欢的内容。
答案 2 :(得分:0)
一种解决方案是创建自己的Zend_View_Helper_FormRadio
版本。称之为My_View_Helper_FormRadio
并将自定义前缀路径添加到视图中(这可以通过配置文件完成)。
然后你就可以完全控制内部渲染(从ViewScript
装饰器的角度来看)。
如果您提供了如何渲染标记的示例,我可以详细说明或建议替代方案。