简介
我正在使用Zend Form
库。 我希望能够设计或控制无线电盒的构造方式。 目前,元素的呈现是"在一行中"。 但是,我想做的是将每个选项呈现在自己的行上。 库似乎没有提供简单的注入,即 <br>
标签,这是我通常在HTML中使用的。 无论如何,我需要帮助弄清楚如何根据我的需求弯曲库。
控制器
use Zend'Form'Element;
use Zend'Form'Form;
$radio = new Element'Radio('gender');
$radio->setValueOptions(array(
'1' => 'Male',
'2' => 'Female',
'3' => 'Other',
));
$radio->setValue(2);
在视图中
<?=$this->formRadio($this->form->get('gender'));?>
观察呈现为
* Male * Female * Other
想要元素呈现为
* Male
* Female
* Other
如何?
示例 HTML 呈现
<form class='my-form'>
<table>
<tr>
<td>
<label><input name="gender" type="radio" value="1">Male</label>
<label><input name="gender" type="radio" value="2">Female</label>
</td>
</tr>
</table>
</form>
你可以完全避开Zend Framework,通过使用CSS来解决这个问题,从而节省一些页面权重(不使用br
标签)。
只需查看用于呈现列表项的重复元素的标记或类名(听起来像是无线电输入),并将其样式设置为垂直显示而不是水平显示。
举个例子:
.my-form input[type="radio"] {
display: block;
}
这将比Zend中的自定义渲染装饰器更快,更简单。
编辑:现在您已经提供了确切的HTML,这里有一些改进。
1) 输入嵌套在标签中,因此您将修改标签的显示而不是输入。
.my-form label {
display: block;
}
2) 呈现的表单(如果这是确切的)当前没有类名。如果表单永远不会在页面上多次使用,则当前 ID 就可以了,您必须更改 CSS 中的选择器以使用 ID 表示法。
#myform label
而不是.my-form label
否则,你可以使用 Zend 的 setAttribute
函数像这样添加一个类名。
$form -> setAttribute('class', 'my-form');