2017-01-09 3 views
1

Я создал форму с полем EntityType с построитель запросов:Заполнитель Когда Query Builder возвращает Null на Entity Тип

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $entity = $builder->getData(); 

    $relatedParentId = $entity->getParentEntity()->getId(); 

    $builder->add('myEntity', EntityType::class, array(
     'class' => myEntity::class, 
     'query_builder' => function(\AppBundle\Repository\myEntityRepository $eR) use ($relatedEntityId) { 
      return $aR->getByParentId($relatedEntityId); 
     }, 
    )) 
} 

Когда запрос возвращает значение, это хорошо. Когда null возвращается, он показывает в форме как пустую опцию с выпадающим списком ни к чему и не очень удобен для пользователя. Я хочу иметь сообщение, чтобы сказать, что результаты не были возвращены.

Обратите внимание, что при возврате результата сообщения не требуется, поэтому опции «placeholder» будет недостаточной. Возможно, я потерял в документации что-то очевидное, но до сих пор мне не повезло.

ответ

0

Используйте опцию замещающий:

$builder->add('states', EntityType::class, array(
    'class' => myEntity::class, 
    'query_builder' => function(\AppBundle\Repository\myEntityRepository $eR) use ($relatedEntityId) { 
     return $aR->getByParentId($relatedEntityId); 
    } 
    'placeholder' => $hasResults ? false : 'No results', 
)); 

Где вы строите флаг hasResult раньше.

+0

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

+0

В этом случае вы можете использовать тип выбора вместо типа сущности. Таким образом, вы можете использовать ту же дату для создания своего массива выборов и использовать его для флага 'hasResults', который будет просто« count ($ results) »в вашем случае. – COil

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

  • Нет связанных вопросов^_^