web-dev-qa-db-ja.com

FormTypeで宣言されていないフィールドの値を取得します

フォームはnameType.phpで宣言されており、ビューはすべてのフィールドをレンダリングしますが、別のフィールドを手動で追加します。

形:

<form action="{{ path('create') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}
    <input type="text" value="2">
   </form>

そして、コントローラーで値を取得します。

$form->bindRequest($request);

コントローラーで入力の値を収集するにはどうすればよいですか?

18
user2740782

フォームがエンティティフィールドにリンクされているためにこれを試行している場合は、マップされていないフィールドをFormTypeに追加できます。そうすれば、エンティティにゲッターやセッターは必要ありません。

->add("inputName", "text", array("mapped"=>false, "data"=>2, "label"=>false))

コントローラでデータを取得するには:

$form->get("inputName")->getData();
59
albert

_$form_はその一部ではないため、input値を取得することはできません。

request属性を使用して、Controllernameから取得する必要があります。

HTML:_<input type="text" value="2" name"var_name">_

コントローラー:$request->request->get('var_name')

4
S.Thiongane

コントローラへの入力の値をどのように収集できますか?

すぐに満足できる方法は、

$form->get('inputName')->getViewData()

マップされていないフィールドの場合。しかし、Symfonyの検証に準拠したより良い方法があると確信しています。

3
Bango

$form->bindRequest($request)を呼び出した後、$form->getData()を呼び出してユーザーから入力を取得できます。

ただし、マップされていないフィールドの入力データを受信する場合は、前述の$request->request->get('field_name')を使用する必要があります。

0
stloyd