#php #forms #symfony #twig
Вопрос:
У меня есть форма с типом выбора, в которой отображаются несколько флажков
Я хочу отобразить что-то вроде этого
<input type="checkbox">
<label><img src="..."></label>
но, похоже, я не могу дать только текстовую метку, а не изображение, что я могу сделать?
$builder->add('whatever',
ChoiceType::class,
[
'choices' =>
[
'firstLabel' => 'firstValue',
'secondLabel' => 'secondeValue',
'thirdLabel' => 'thirdValue'
],
'expanded' => true,
'multiple' => true,
]
);
Ответ №1:
Вы можете создать пользовательскую form_theme, которая обрабатывает изображение как метку.
Или что-то более простое и конкретное — переопределить ваш шаблон метки для whatever
. Смотрите пример из SymfonyCast
Создайте новый шаблон ветки, например, в templates/form/field/whatever_label.html.twig
.
Важной частью является то, как вы называете свой блок twig (см. symfony doc).
Вы можете либо переопределить каждое whatever
поле, либо только whatever
поле для определенного объекта.
Допустим , имя вашей сущности таково Product
. Вы должны назвать свой блок {% block _product_whatever_label %}
.
И теперь вы можете делать все, что захотите, внутри своего поля, например, добавлять изображение напрямую или использовать конфигурацию из form
переменной.
{% block _product_whatever_label %}
<label>
<img src="myImage.png"></img>
</label>
{% endblock %}