【问题标题】:Placeholder When Query Builder Returns Null on Entity Type查询生成器在实体类型上返回 Null 时的占位符
【发布时间】:2017-01-09 15:31:55
【问题描述】:

我使用查询构建器创建了一个带有 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 时,它在表单上显示为一个空白选项,下拉菜单中没有任何内容,并且对用户不是很友好。我想要一条消息说没有返回结果。

请注意,当返回结果时,不需要任何消息,因此“占位符”选项是不够的。我可能在文档中遗漏了一些明显的东西,但到目前为止我没有运气。

【问题讨论】:

    标签: symfony symfony-forms


    【解决方案1】:

    使用占位符选项:

    $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 标志。

    【讨论】:

    • 您认为我必须先使用单独的查询构建 hasResult 标志,还是有办法根据查询构建器返回的内容直接执行此操作?
    • 在这种情况下,您可以使用选择类型而不是实体类型。因此,您可以使用相同的日期来构建您的选择数组并将其用于 hasResults 标志,在您的情况下这将只是一个 count($results)
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2021-01-20
    • 2021-05-29
    • 1970-01-01
    • 2016-05-22
    • 2018-01-11
    相关资源
    最近更新 更多