我正在尝试按照表单中的单选按钮添加Zend_Form_Elements,但到目前为止我一直无法这样做。如果有人能指出我正确的方向,将不胜感激。表单需要呈现如下所示:
(*) [____]%
( ) [____]€
( ) [___] for [___]
答案 0 :(得分:0)
使用表单decorators和css根据需要设置输入样式。
您可以使用forn装饰器来重写表单的标记。但是它非常挑战,也许你最好的选择是表单viewScript。这很容易实现,让您100%控制表单的html。看看
示例:使用ViewScript装饰器完全自定义
在我链接的示例中。
答案 1 :(得分:0)
这样的事情怎么样:
class My_RadioForm extends Zend_Form
{
public function init()
{
$this->addElement('radio', 'myradio', array(
'label' => 'Select an option below',
'multiOptions' => array(
'val1' => 'Text 1',
'val2' => 'Text 2',
'val3' => 'Text 2',
),
));
}
}
对于非常具体的渲染,@ izogood是对的:必须进入装饰师的所有业务。
答案 2 :(得分:0)
如果只是定位输入标签,您可以使用docorators。您可以通过覆盖/修改默认的FormElements装饰器来实现,例如,通过将float:left style属性添加到特定的form元素。继续David的例子:
$this->addElement('radio', 'myradio', array(
'label' => 'Select an option below',
'multiOptions' => array(
'val1' => 'Text 1',
'val2' => 'Text 2',
'val3' => 'Text 2',
),
'decorators' =>
array(
'ViewHelper',
'Errors',
'Description',
array('HtmlTag', array('tag' => 'dd', 'style' => 'float: left')),
'Label'
)
));
还有一个setDefaultDecorators()方法,它允许您覆盖整个表单中的所有元素装饰器。
如果要创建复合元素的更高级解决方案 - http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html - 即包含多个输入标记的自定义表单元素。您可以通过这种方式更好地控制表单业务逻辑。