表单查询symfony 3.4中的空选项

时间:2019-06-26 18:01:25

标签: forms symfony

我必须以query_builder形式显示实体

这是我的代码,格式为:

$builder->add('dispositif', EntityType::class, array(
        'class'     => 'LeaPrestaBundle:EgwDispositif',
        'label'     => 'nomDispositif',
        'required'  => true,
        'empty_data' => null,
        'query_builder' => function( $er)
        {
        return $er->createQueryBuilder('d')
        ->where('d.isActive = :isActive')
        ->setParameter('isActive', 1 )
        ->orderBy('d.nomDispositif','ASC');
        },
    ));

问题在于该选项为空:

<select id="egw_presta_dispositif" name="egw_presta[dispositif]">
    <option value="52"></option>
    <option value="55"></option>
    <option value="62"></option>
    <option value="58"></option>
</select>

例如,除了值52外,还应该有一个标签“ dispositif”(dispositif的名称)。

它来自实体吗?

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

尝试使用包含您要显示的内容的EgwDispositif字段添加'choice_label'属性:

$builder->add('dispositif', EntityType::class, array(
        'class'     => 'LeaPrestaBundle:EgwDispositif',
         /** label will be displayed next to your form field unless it's a translation key or else  **/
        'label'     => 'Nom du dispositif',
        'required'  => true,
        'empty_data' => null,
        /** any field containing what you want to display as option label  **/
        'choice_label' => 'nomDispositif',
        'query_builder' => function( $er)
        {
        return $er->createQueryBuilder('d')
        ->where('d.isActive = :isActive')
        ->setParameter('isActive', 1 )
        ->orderBy('d.nomDispositif','ASC');
        },
    ));

似乎您将表单字段属性的选项“标签”与选项“ choice_label”混淆了。您可能希望您的标签成为用户可以阅读的标签(bu也许不会,这取决于您)

在这里看看:https://symfony.com/doc/current/reference/forms/types/entity.html