2013-06-13 2 views
31

Я создаю формы с неотображаемым полем, как описано в form documentation.Доступ к неотображаемому полю в Symfony2 Controller

Однако, когда в контроллере или аналогичный, я хочу, чтобы получить доступ к нему, в настоящее время я использую массив запроса POST и выйти оттуда, как так:

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

Я просто не могу помочь, но думая, что это не самый лучший способ, и я ничего не могу найти в официальной документации.

Есть ли лучший способ, чем это?

+0

Как насчет вызова get ('unmapped_field') по вашему запросу Object? –

+1

Это неотображенное поле, содержащееся в объекте Entity, или ваша форма привязана к плоскому массиву? – DonCallisto

ответ

56

Вы можете получить доступ к несопоставленному полю в форме

$unmappedField = $form['unmapped_field']->getData(); 
+0

работает как шарм –

+3

да, да, но как получить его динамически в сценарии, где я создаю динамические неотображаемые поля – Dheeraj

+0

Если у вас есть форма с вложенными типами, это будет нечто вроде '$ unmappedField = $ form ['subtype_name '] [' unmapped_field '] -> getData(); ' – Sam

14

взят из симфони дока НФА 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 (прокрутите немного вниз)

+0

Я не знал, что' getData' имеет дополнение 'setData'. То, что мне нужно, спасибо! – Sam

Смежные вопросы