Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 将类atribute添加到symfony form builder行分区_Css_Forms_Symfony_Attributes_Abstract - Fatal编程技术网

Css 将类atribute添加到symfony form builder行分区

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="

以下是我的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="/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"