web-dev-qa-db-ja.com

Symfony2コントローラーのマップされていないフィールドにアクセスする

フォームのドキュメント で説明されているように、マップされていないフィールドを持つフォームを作成しています。

しかし、コントローラーなどでアクセスしたい場合、現在POSTリクエスト配列を使用してそこから抜け出します:

$postData = $this->getRequest()->request->get('my_form_name');
$unmappedField = $postData['unmapped_field']

私は仕方がありませんが、これは最善の方法ではないと考えており、公式ドキュメントには何も見つかりません。

これよりも良い方法はありますか?

37
Andrew Atkinson

フォームのマップされていないフィールドにアクセスできます

$unmappedField = $form['unmapped_field']->getData();
63
Alexey B.

symfony doc sf 2.5(sf 2.3でもテスト済み)から取得:

フォームタイプ:

use Symfony\Component\Form\FormBuilderInterface;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('task')
        ->add('dueDate', null, array('mapped' => false))


  ->add('save', 'submit');
}

コントローラ:

$form->get('dueDate')->getData();
$form->get('dueDate')->setData(new \DateTime());

http://symfony.com/doc/current/book/forms.html#creating-form-classes (少し下にスクロール)

15
c33s