我有一个使用视图脚本的zend表单。我想访问单个单选按钮项,但我不知道该怎么做。现在,我只是使用以下方式打印出来:
echo $this->element->getElement('myRadio');
将它们全部打印出来。我需要更多控制。我需要能够在一列中打印前5个选项,然后在第二列中打印下5个选项。
答案 0 :(得分:4)
我有同样的问题。我发现没有很好的方法(大约ZF 1.10.8)
Matthew Weier O'Phinney在此页面上提出了一些建议:
http://framework.zend.com/issues/browse/ZF-2977
但我发现这种做法在实践中很麻烦。那张票上的原始海报有一个好主意,我认为他们应该最终采用一些很好的方法来实现这一点。
但由于目前没有更好的方法,我现在只是遵循马修的建议。
对于我正在处理的表单,只需从组中渲染一个单一的单选按钮,我必须这样做:
在我的表单类:
$radio = new Zend_Form_Element_Radio('MYRADIO');
$radio->addMultiOption('OPTION1', 'Option One')
->addMultiOption('OPTION2', 'Option Two');
$this->addElement($radio);
在我的视图脚本中,只需渲染OPTION1 :
echo $this->formRadio(
$this->form->MYRADIO->getFullyQualifiedName(),
$this->form->MYRADIO->getValue(),
null,
array('OPTION1' => $this->form->MYRADIO->getMultiOption('OPTION1'))
);
这将呈现<input type="radio" />
元素和关联的<label>
。没有其他装饰器会被渲染,这很痛苦。
对于您的情况,您可能希望使用ViewScript
视图助手渲染您的无线电元素和其他元素 - 因此您可以按照您所描述的方式在您自己的自定义表格标记中排列所有元素。
答案 1 :(得分:1)
也想出这个。只需使用
$this->element->getElment('myRadio')->getMultiOptions();
它将返回一个键/值选项数组。