Css 将类atribute添加到symfony form builder行分区
以下是我的AbstractType代码:Css 将类atribute添加到symfony form builder行分区,css,forms,symfony,attributes,abstract,Css,Forms,Symfony,Attributes,Abstract,以下是我的AbstractType代码: $builder->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle')) 上面生成的代码: <form class="fos_user_registration_register form-horizontal" role="form" method="POST" action="
$builder->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'))
上面生成的代码:
<form class="fos_user_registration_register form-horizontal" role="form" method="POST" action="/app_dev.php/register/">
<div id="fos_user_registration_form">
<div>
<label class="required" for="fos_user_registration_form_email">Email: </label>
<input id="fos_user_registration_form_email" type="email" required="required" name="fos_user_registration_form[email]">
</div>
</div>
</form>
</div>
电邮:
我的问题是如何将class属性添加到行div been:
<div class="form-group">
<label class="required" for="fos_user_registration_form_email">Email: </label>
<input id="fos_user_registration_form_email" type="email" required="required" name="fos_user_registration_form[email]">
</div>
电邮:
这个问题与其他问题非常相似,只是您应该使用:
{{ form_start(form), {'attr': {'class': 'form-group'}} }}
另一种解决方案是在Form\Type类中定义它:
$builder->add('email', 'email', array(
'label' => 'form.email',
'translation_domain' => 'FOSUserBundle',
'attr' => array('class' => 'form-group'),
'label_attr' => array('class' => 'if-you-want-also-style-attr-label'),
));
对我来说,skler的答案不是一个解决方案,因为它将类添加到输入电子邮件中,而不是添加到div中 编辑: 更好的解决方案
{% for child in form.children|keys %}
<div class="login_field">
{% if 'token' not in form_label(attribute(form.children,child)) %}
{{form_label(attribute(form.children,child)) }}
{% endif %}
{{form_widget(attribute(form.children,child)) }}
</div>
<br/>
{% endfor %}
{%用于表单中的子项。子项|键%}
{%if'token'不在form_标签中(属性(form.children,child))%}
{{form_标签(属性(form.children,child))}
{%endif%}
{{form_小部件(属性(form.children,child))}
{%endfor%}
结果:
<div class="registration_field">
<label>e-mail</label>
<input type="email">
</div>
电子邮件
它删除了未使用的div和令牌标签,我们可以使用.registration\u字段选择器而不是.registration\u field>div
阿姆斯特丹:
我回答skler的解决方案说对我来说这不是解决方案,
抱歉,不清楚。Symfony2/Twig有一个很棒的表单渲染引擎;完全覆盖它是一种浪费。作为一种更优雅的选择,我们可以利用内置的表单主题。根据文件: Symfony附带了四个内置的表单主题,它们定义了呈现表单每个部分所需的每个片段 我们可以覆盖默认主题并创建自己的主题。这允许我们覆盖
表单行
块,并将我们自己的可爱属性添加到周围的div
。只需将其放在一个文件中,比如:views/forms/fields.twig
当然,您可以自由添加声明来获取表单属性,而不是硬编码类名
(来源:)将以下行添加到你的app/config/config.yml中:
twig:
form:
resources: ['bootstrap_3_layout.html.twig']
或
当你说“这不是一个解决方案,因为……”那就不是答案。如果您能提供帮助,请更新。这将仅将属性应用于
表单
标记。这不是OP想要的。此外,您应该将散列放在form_开始声明中,而不是放在外面。否则它不会工作,因为这是无效的细枝语法。{{form_start(form),{'attr':{'class':'form group'}}}}}这将产生错误,因为,“{form_start(form,{'attr':{'class':'form group'}}可能是的重复
{% form_theme form 'forms/fields.twig' %}
twig:
form:
resources: ['bootstrap_3_layout.html.twig']
twig:
form_themes:
- "bootstrap_3_layout.html.twig"