Я использую 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 в самом файле ветки (я хочу сделать оператор if else для choicelabelname).
Я читал о {{ form.task.vars.id }}
здесь https://symfony.com/doc/4.1/form/rendering.html
Так что я подумал, что могу, может быть, сделать что-то вроде этого
{{ form_widget(form.location, { 'choice_label': form.location.vars.id }) }}
Но это не работает (я все еще получаю название). Может быть, у меня нет строки правильно. Или это вообще возможно? или нет для выпадающего поля?
Заранее спасибо!
--------- редактировать ----------------------
так что я заметил, что я на самом деле сгенерировал поле выбора неправильно.
Symfony2 / Twig - перебирать опции выбора . и я нашел некоторую информацию, чтобы получить поле сущности. Symfony2: доступ к полям сущностей в Twig с типом поля сущности
<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_end (форма)}}.
Также генерируется мой пользовательский labeltitle, но это потому, что у меня есть дублированное поле. он берет название из дубликата ...