Я хочу переопределить базовое поле ввода формы Symfony2, чтобы добавить свой класс, но это не работает. Вот мой код AcmeDemoBundle:Form:fields.html.twig
{% extends 'form_div_layout.html.twig' %}
{% block form_widget_simple %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %} class="testik_class"/>
{% endblock form_widget_simple %}
В config.yml
# Twig Configuration
twig:
debug: "%kernel.debug%"strict_variables: "%kernel.debug%"form_themes:
- 'AcmeDemoBundle:Form:fields.html.twig'
Но это не работает. В моей форме class
attr по-прежнему равен custom_form
, Что я делаю не так? Может быть, я переигрываю блок неправильного питания?
Кто-нибудь может мне помочь? Спасибо!
Вспомогательные средства:
Вот мой тип формы:
/**
* {@inheritDoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', 'text', ['label' => 'form.title'])
->add('content', 'textarea', ['label' => 'form.content'])
;
}
Вот шаблон формы:
{{ form_widget(form) }}
Интересно, что, когда я пытаюсь переопределить textarea_widget
блок или integer_widget
все работает нормально. Или когда я пытаюсь добавить data-*
приписывать simple_widget
это тоже отлично работает. Но class
не добавляется.
Если вы хотите переопределить только класс, вы можете просто сделать:
{{ form_widget(form, {'attr': {'class': 'testik_class'}}) }}
в вашем шаблоне, без использования какой-либо конкретной темы формы. Это решает вашу проблему и делает ваш код еще более читабельным.
Или даже когда вы строите свою форму в PHP:
$builder->add('title', 'text', ['label' => 'form.title', 'attr' => array( 'class' => 'testik_class')])
Других решений пока нет …