2013-11-22 2 views
0

Я искал какое-то время, но я ничего не нашел.Symfony2 form dynamic select entity

Я хочу создать динамический выбор с другим выбором. Пример:

в моей форме у меня есть два поля (категория & подкатегория), связанная с сущностью, когда я выбираю элемент в категории, выпадающий элемент в подкатегории изменится.

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

$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event){ 
     $form = $event->getForm(); 
     $data = $event->getData(); 

     var_dump($data->getCategory()); 
    }); 

Хорошо, я могу получить выбранную категорию и после загрузки подкатегории, но как я могу назвать это с помощью ajax?

Надеюсь у вас пример ...

ответ

0

Ответ не так просто ... В принципе, если вы хотите создать форму в соответствии с первоначальной & представленной стоимости, вам необходимо прикрепить прослушиватель событий к PRE_SET_DATA & Событие PRE_SUBMIT. Когда форма инициализируется, происходит событие PRE_SET_DATA. Здесь вы получите свой объект как данные в событии формы или null, если вы его не предоставите (не забывайте обрабатывать этот случай). С этой первой частью вы сможете динамически строить свою форму в соответствии с вашими первоначальными данными.

Затем, когда вы обработаете свою форму, событие PRE_SUBMIT будет запущено, если форма будет отправлена. В этом случае вы обнаружите, что плоский массив увядает со всеми представленными данными. В соответствии с этим массивом вы можете восстановить форму в соответствии с представленными данными. Основной проблемой здесь является массив - это массив &, а не ваш объект модели. Это означает, что у вас не будет объекта категории, но его представление представления (его идентификатор) ...

Надеюсь, это поможет!