【问题标题】:How to fix these form theming problems in Symfony2?如何解决 Symfony2 中的这些表单主题问题?
【发布时间】:2014-04-13 12:29:29
【问题描述】:

我有多个关于表单的问题

第一个问题,如何在表单构建器中用 div(带类)包装输入?

所以我想包装这个提交输入:

->add('Submit', 'submit', array(
    'attr' =>  array(
        'class' => 'btn btn-success'
    ),
))

要得到这个结果:

<div class="col-sm-offset-2 col-sm-10">
    <input type="submit" class="btn btn-success"/>
</div>

第二个问题,如何通过表单生成器给表单设置模板?

在我的错误示​​例中是否有类似的方法?还是不行?

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->setTemplate('::vertical-form.html.twig')
        ->add(...)
}

最后一个问题,如何给自定义表单模板中的表单元素添加类?

我从 form_div_layout.html.twig 中获取这段代码,并将类(第 9 行)添加到表单元素。但它不起作用,我在我的视图中看不到元素!

{% block form_start %}
    {% spaceless %}
        {% set method = method|upper %}
        {% if method in ["GET", "POST"] %}
            {% set form_method = method %}
        {% else %}
            {% set form_method = "POST" %}
        {% endif %}
        <form class="form-horizontal" role="form" name="{{ form.vars.name }}" method="{{ form_method|lower }}" action="{{ action }}"{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}{% if multipart %} enctype="multipart/form-data"{% endif %}>
        {% if form_method != method %}
            <input type="hidden" name="_method" value="{{ method }}" />
        {% endif %}
    {% endspaceless %}
{% endblock form_start %}

在我看来,我只有那段代码来呈现表单:

{% form_theme form '::custom-form.html.twig' %}
{{ form(form_name) }}

也许我应该将所有 form_div_layout.html.twig 文件复制到另一个模板并调整我需要的内容?

提前感谢您的帮助!

【问题讨论】:

    标签: forms symfony twig


    【解决方案1】:
    1. 在我看来,在这种情况下,您应该在模板中手动创建提交按钮(而不是通过表单类)

    2. 我不知道像这样的解决方案。

    3. 您应该复制所有文件内容。 读这个: http://symfony.com/doc/current/cookbook/form/form_customization.html

    【讨论】:

    • 感谢您的回答。我将为每个目的创建一个表单主题。
    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 2021-06-30
    • 2019-01-06
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多