symfony-在树枝中而不是formbuilder中设置choice_label

时间:2019-04-29 19:43:41

标签: forms twig symfony4 formbuilder choicefield

我正在使用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)}}。 我的自定义标签标题也会生成,但是那是因为我有重复的字段。它从重复项中获取标题...

0 个答案:

没有答案