フォームはnameType.php
で宣言されており、ビューはすべてのフィールドをレンダリングしますが、別のフィールドを手動で追加します。
形:
<form action="{{ path('create') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="text" value="2">
</form>
そして、コントローラーで値を取得します。
$form->bindRequest($request);
コントローラーで入力の値を収集するにはどうすればよいですか?
フォームがエンティティフィールドにリンクされているためにこれを試行している場合は、マップされていないフィールドをFormTypeに追加できます。そうすれば、エンティティにゲッターやセッターは必要ありません。
->add("inputName", "text", array("mapped"=>false, "data"=>2, "label"=>false))
コントローラでデータを取得するには:
$form->get("inputName")->getData();
_$form
_はその一部ではないため、input
値を取得することはできません。
request
属性を使用して、Controller
のname
から取得する必要があります。
HTML:_<input type="text" value="2" name"var_name">
_
コントローラー:$request->request->get('var_name')
コントローラへの入力の値をどのように収集できますか?
すぐに満足できる方法は、
$form->get('inputName')->getViewData()
マップされていないフィールドの場合。しかし、Symfonyの検証に準拠したより良い方法があると確信しています。
$form->bindRequest($request)
を呼び出した後、$form->getData()
を呼び出してユーザーから入力を取得できます。
ただし、マップされていないフィールドの入力データを受信する場合は、前述の$request->request->get('field_name')
を使用する必要があります。