8

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

4

3 回答 3

7

如果表单元素没有“id”属性,标签将包装输入:

<label>Label<input /></label>

否则:

<label for="test">Label</label><input id="test" />
于 2013-08-03T13:20:44.807 回答
0

看着(zf2 版本 2.25 开发):

\Zend\Form\View\Helper\FormRow

看来,如果您为表单元素提供id,则默认的一般行为是将输入元素放置在其相应的标签元素内。

formRow 视图助手的第二个参数将把标签文本放置在文档流中的输入元素之前(前置)或之后(附加)。(默认是放在前面。)

检查渲染方法以获取更多详细信息。

于 2013-10-26T00:10:18.427 回答
-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
于 2013-04-11T14:41:33.607 回答