2014-09-10 6 views
0

У меня есть этот кусок кода:Динамические свойства изменения формы поля в Symfony2

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('name', ['required' => true]) 
     ->add('item', ['required' => true]) 
     ->add('isItem', ['empty_value' => true]) 
     ->sdd('submit') 
    ; 
} 

Где: имя и элемент являются строками, isItem является булево поле. Я хочу изменить динамические свойства item Поле на основе isItem значение.

ответ

0

Это достигается использованием Form Events (documentation).

Вы могли бы, например, слушать FormEvents::PRE_SUBMIT события, как это:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('name', ['required' => true]) 
     ->add('item', ['required' => true]) 
     ->add('isItem', ['empty_value' => true]) 
     ->sdd('submit') 
    ; 

    $builder->addEventListener(FormEvents::PRE_SUBMIT, array($this, 'onPreSubmit')); 
} 

public function onPreSubmit(FormEvent $event) 
{ 
    $data = $event->getData(); 
    $form = $event->getForm(); 
    $entity = $form->getData(); 

    if ($data['isItem']) { 
     // do something 
    } else 
     // do something else 
    } 
} 
+0

Спасибо, это хорошее решение. Но в моем примере я должен был использовать если (Исеть ($ данных [ 'isItem']) вместо: если ($ данных [ 'isItem']) – user2799026

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