2015-02-16 7 views
1

Я хочу переопределить базовое поле ввода формы Symfony2, чтобы добавить мой класс, но он не работает. Вот мой код AcmeDemoBundle:Form:fields.html.twigЗаменить формы полей шаблонов в Symfony2

{% 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) }} 

Insteresting, что при попытке переопределить textarea_widget блок или integer_widget, все работает отлично. Или когда я пытаюсь добавить data-* attr в simple_widget, он отлично работает. Но class не добавляет.

+0

Сообщение здесь код из шаблона, где вы используете этот блок. Я думаю, что основная проблема в неправильном блоке, что вы переопределяете. –

+0

Хм ... Я не использую это в своей форме.html.twig, где я визуализую форму. Если я понимаю правильные документы, он должен автоматически подключаться, когда я настраиваю 'config.yml' ... – nowiko

+0

Да, вы понимаете это правильно. Но нам нужно знать, какие поля форм вы хотите отображать и как вы это делаете? –

ответ

1

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

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

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

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

$builder->add('title', 'text', ['label' => 'form.title', 'attr' => array('class' => 'testik_class')]) 
Смежные вопросы