我想覆盖基本的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
属性仍然等于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')])