我想覆盖基础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
。我做错了什么?也许我覆盖了incorect块?
有人能帮助我吗?谢谢!
Additionals: 这是我的表单类型:
/**
* {@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-*
attr添加到simple_widget
时,它也能正常工作。但是class
没有附加。
答案 0 :(得分:1)
如果您只想覆盖一个类,您可以执行以下操作:
{{ form_widget(form, {'attr': {'class': 'testik_class'}}) }}
在您的模板中,不使用任何特定的表单主题。这解决了您的问题,使您的代码更具可读性。
甚至在PHP中构建表单时:
$builder->add('title', 'text', ['label' => 'form.title', 'attr' => array( 'class' => 'testik_class')])