我正在使用formbuilder呈现选择下拉字段。
->add('location', EntityType::class, [
'class' => location::class,
'choice_label' => 'title',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.id', 'ASC');
},
'attr'=>array('class'=>'customdata')
])
然后在树枝中渲染以下{{ form_widget(form.location }) }}
这很好用。但是我想在树枝文件本身中设置choice_label(我想为choicelabelname做一个if else语句)。
我在https://symfony.com/doc/4.1/form/rendering.html这里读到了{{ form.task.vars.id }}
所以我认为我也许可以做这样的事情
{{ form_widget(form.location, { 'choice_label': form.location.vars.id }) }}
但是这不起作用(我仍然可以得到标题)。也许我没有正确的方式输入字符串。或实际上甚至有可能吗?或不输入下拉字段?
谢谢!
---------编辑----------------------
所以我注意到我实际上生成了错误的选择字段。
Symfony2/Twig - iterate over select options。我发现了一些信息来获取一个entityfield。 Symfony2 : accessing entity fields in Twig with an entity field type
<select data-width="100%">
{% for key,val in form.locationmoi.vars.choices %}
<option value="{{ val.value }}" {{ form.locationmoi.vars.value == '' and key == 0 ? ' selected ' :(val.value == form.locationmoi.vars.value ? ' selected ' : '') }}>{{ form.locationmoi.vars.choices[key].data.title }} </option>
{% endfor %}
</select>
但是,此字段会生成2次。 1我想要的方式和1标准。 我也使用{{form_start(form)}} {{form_end(form)}}。 我的自定义标签标题也会生成,但是那是因为我有重复的字段。它从重复项中获取标题...