在Zf2中使用formRow视图助手输入前显示标签

时间:2013-04-11 10:59:10

标签: zend-framework2 zend-form zend-view

在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视图助手实现相同的效果?

3 个答案:

答案 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