2017-01-09 69 views
1

空我创建了一个形式与查询构建器的EntityType场:占位符在查询生成器返回的实体类型

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时,它会在窗体上显示为一个空白选项,其下拉式为空并且不是非常用户友好的。我想有一个消息说没有结果返回。

请注意,返回结果时不需要任何消息,因此“占位符”选项将不够用。我可能错过了文档中显而易见的东西,但迄今为止我没有运气。

回答

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

在这个CAS中,您可以使用选择类型而不是实体类型。因此,您可以使用相同的日期来构建您的选择数组,并将其用于'hasResults'标志,在您的情况下这只是一个'count($ results)'。 – COil