@Qixing

Как исключить query_builder в buildForm Symfony2?

$builder
            ->add(
                'maker',
                'entity',
                array(
                    'class' => 'CrbrBundle:CrbrItemMaker',
                    'property' => 'name',
                    'required' => false,
                    'data' => $options['maker'],
                    'empty_value' => '-- Все --',
                    'query_builder' =>  function (EntityRepository $er) use ($options) {

                            return $er->createQueryBuilder('x')
                                ->innerJoin('x.item', 'i')
                                ->innerJoin('i.category', 'c')
                                ->innerJoin('c.parentCategory', 'h')
                                ->andWhere('h.categoryGroup = :groupCategory')
                                ->setParameter(
                                    'groupCategory',
                                    $options['groupCategory']
                                );
                        } 
                ,
                )
            )

Всем привет. Хочу при определенном условии $options['groupCategory'] == 3, чтобы опция 'query_builder' не выполнялась. Просто не было такого пункта
  • Вопрос задан
  • 2452 просмотра
Решения вопроса 1
keltanas
@keltanas
Software Developer
Сделайте форму без поля `marker`, а добавляйте его по событию FormEvents::PRE_SET_DATA при совпадении нужных условий.
См. symfony.com/doc/current/cookbook/form/dynamic_form...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
benbor
@benbor
Помог ответ - не забудь лайкнуть
if .... else уже не работает?
Ответ написан
@romashka_sky
'query_builder' =>  function (EntityRepository $er) use ($options) {
                            if ($options['groupCategory'] == 3) {
                                 return $er->createQueryBuilder('x');
                            }
                            return $er->createQueryBuilder('x')
                                ->innerJoin('x.item', 'i')
                                ->innerJoin('i.category', 'c')
                                ->innerJoin('c.parentCategory', 'h')
                                ->andWhere('h.categoryGroup = :groupCategory')
                                ->setParameter(
                                    'groupCategory',
                                    $options['groupCategory']
                                );
                        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы