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 dev)を見る:

\Zend\Form\View\Helper\FormRow

フォーム要素にidを指定しない場合、デフォルトの一般的な動作は、input 要素を対応する label 要素内に配置することです。

formRow ビュー ヘルパーの 2 番目の引数は、ラベル テキストをドキュメント フローの入力要素の前 (先頭に追加) または後 (追加) に配置します。(デフォルトでは、前に配置されます。)

詳細については、render メソッドを確認してください。

于 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 に答える