【发布时间】:2010-10-18 18:14:18
【问题描述】:
我有一个使用视图脚本的 zend 表单。我想访问各个单选按钮项目,但我不知道该怎么做。现在,我只是将它们全部打印出来:
echo $this->element->getElement('myRadio');
这会将它们垂直打印出来。我需要多一点控制。我需要能够在一列中打印前 5 个选项,然后在第二列中打印接下来的 5 个。
【问题讨论】:
我有一个使用视图脚本的 zend 表单。我想访问各个单选按钮项目,但我不知道该怎么做。现在,我只是将它们全部打印出来:
echo $this->element->getElement('myRadio');
这会将它们垂直打印出来。我需要多一点控制。我需要能够在一列中打印前 5 个选项,然后在第二列中打印接下来的 5 个。
【问题讨论】:
我也有同样的问题。我发现没有很好的方法来做到这一点(大约 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 视图助手来呈现您的单选元素和其他元素 - 因此您可以按照您的描述将所有元素排列在您自己的自定义表格标记中。
【讨论】:
也想出了这个。只需使用
$this->element->getElment('myRadio')->getMultiOptions();
它会返回一个键/值选项数组。
【讨论】: