在Zend Framework 2.1.4中,我使用标准的表单视图助手来渲染我的表单元素。
当我尝试:
<?php echo $this->formRow($form->get('Title'));?>
标签文本和输入元素放在标签中:
<label>
<span>Title</span><input type="text" name="Title" placeholder="Inserisci titolo"
required="required" value="">
</label>
同样的:
<?php echo $this->formCollection($form, TRUE);
但是,如果我渲染出标签并单独输入:
echo $this->formLabel($form->get('Title'));
echo $this->formInput($form->get('Title'));
它生成我想要的html:
<label for="Title">Title</label>
<input type="text" name="Title" placeholder="Insert Title" required="required" value="">
如何使用formRow视图助手实现相同的效果?
答案 0 :(得分:7)
如果表单元素没有“id”属性,标签将包装输入:
<label>Label<input /></label>
否则:
<label for="test">Label</label><input id="test" />
答案 1 :(得分:0)
看(zf2版本2.25 dev):
\ Zend的\表格\视图\助手\ FormRow
如果你不为表单元素提供 id ,似乎默认的一般行为是将输入元素放在中>他们相应的标签元素。
formRow视图助手的第二个参数,将标签文本放在文档流中的输入元素之前(prepend)或之后(追加)。 (默认设置是放在它之前。)
检查渲染方法以获取更多详细信息。
答案 2 :(得分:-2)
首先,您必须查看源代码以了解formRow的工作原理:https://github.com/zendframework/zf2/blob/master/library/Zend/Form/View/Helper/FormRow.php
在此代码中您会看到__invoke具有$ labelPosition参数,您可以使用const LABEL_APPEND和LABEL_PREPEND预先添加或附加。
简而言之,尝试做这样的事情:
$this->formRorw($form->get('element'), 'prepend'); // Or append as you want