Переопределить шаблоны полей формы в Symfony2

Я хочу переопределить базовое поле ввода формы 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 не добавляется.

1

Решение

Если вы хотите переопределить только класс, вы можете просто сделать:

{{ form_widget(form, {'attr': {'class': 'testik_class'}}) }}

в вашем шаблоне, без использования какой-либо конкретной темы формы. Это решает вашу проблему и делает ваш код еще более читабельным.

Или даже когда вы строите свою форму в PHP:

$builder->add('title', 'text', ['label' => 'form.title', 'attr' => array( 'class' => 'testik_class')])
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]