我必须以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的名称)。
它来自实体吗?
在此先感谢您的帮助!
答案 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