2013-06-13 9 views
31

Tworzę formularze z niezmapowanym polem, jak wyjaśniono w form documentation.Uzyskiwanie dostępu do niezmapowanego pola w kontrolerze Symfony2

Jednak gdy w sterowniku lub podobny Chcę uzyskać do niego dostęp, obecnie używam tablicę żądania POST i wydostanie się stamtąd tak:

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

Po prostu nie mogę pomóc, ale myślałem, że to jest nie jest najlepszy sposób i nie mogę znaleźć niczego na oficjalnej dokumentacji.

Czy jest lepszy sposób niż to?

+0

Co z wywołaniem get ("unmapped_field") na żądanie Obiekt? –

+1

Czy to niezmapowane pole zawarte jest w obiekcie encji, czy też formularz jest powiązany z płaską tablicą? – DonCallisto

Odpowiedz

56

może uzyskać dostęp do pola niemapowany w postaci

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

działa jak urok –

+3

tak, tak, ale jak go uzyskać dynamicznie w scenariuszu, w którym tworzę dynamiczne, niezmapowane pola – Dheeraj

+0

Jeśli masz formularz z typami zagnieżdżonymi, będzie to coś w stylu '$ unmappedField = $ form ['nazwa podtypu '] [' unmapped_field '] -> getData(); ' – Sam

14

pochodzi z dokumentu symfony sf 2,5 (testowany z SF 2,3): Typ

postać:

use Symfony\Component\Form\FormBuilderInterface; 

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


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

kontrolera:

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

http://symfony.com/doc/current/book/forms.html#creating-form-classes (przewiń w dół)

+0

Nie wiedziałem, że' getData' ma uzupełnienie 'setData'. Dokładnie to, czego potrzebowałem, dzięki! – Sam

Powiązane problemy