Как исключить 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' не выполнялась. Просто не было такого пункта

21 Авг 2019 в 07:08
235 +1
0
Ответы
1

Вы можете добавить условие внутри функции 'query_builder', чтобы она не выполнялась, если условие options[′groupCategory′]==3несоблюдается.Например:</p><pre><codeclass="language−php">options['groupCategory'] == 3 не соблюдается. Например:</p><pre><code class="language-php">options[groupCategory]==3несоблюдается.Например:</p><pre><codeclass="languagephp">builder
->add(
'maker',
'entity',
array(
'class' => 'CrbrBundle:CrbrItemMaker',
'property' => 'name',
'required' => false,
'data' => $options['maker'],
'empty_value' => '-- Все --',
'query_builder' => function (EntityRepository $er) use ($options) {
if ($options['groupCategory'] != 3) {
return $er->createQueryBuilder('x')
->innerJoin('x.item', 'i')
->innerJoin('i.category', 'c')
->innerJoin('c.parentCategory', 'h')
->andWhere('h.categoryGroup = :groupCategory')
->setParameter(
'groupCategory',
$options['groupCategory']
);
} else {
return null;
}
},
)
);

Таким образом, если $options['groupCategory'] равен 3, функция 'query_builder' вернет null и запрос не будет выполняться.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир