symfony2 表单模板

发布于 2024-12-02 09:41:23 字数 536 浏览 1 评论 0原文

我想渲染一个表单。字段行的 HTML 应如下所示:

<li class="text">
  <label for="fieldname">
  <div>
    <input type="text" ... />
  </div>
</li>

当字段类型为文本时,li.class 必须相同。

我覆盖了 field_row 块:

{% block field_row %}
{% spaceless %}
    <li class="text">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock field_row %}

但是如何替换类值?

I want to render a form. HTML for a field row should be like this:

<li class="text">
  <label for="fieldname">
  <div>
    <input type="text" ... />
  </div>
</li>

when the field type is text the li.class have to be the same.

I overwrite the field_row block:

{% block field_row %}
{% spaceless %}
    <li class="text">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock field_row %}

but how to replace the class value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你在看孤独的风景 2024-12-09 09:41:23

您可以尝试将公共成员附加到您的 FormType 类(如果存在...)并从树枝模板中调用它。

也许表单的属性数组也可以在树枝模板中访问......

class YourType extends AbstractType
{
    public $class = 'text';

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('fieldname');
    }
    //...
}

并且

{% block field_row %}
{% spaceless %}
    <li class="{{ form.class }}">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock field_row %}

You can try to attach a public member to your FormType class (If present...) and call it from the twig template.

Maybe also the attributes array of a form can be accessed in a twig template...

class YourType extends AbstractType
{
    public $class = 'text';

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('fieldname');
    }
    //...
}

And

{% block field_row %}
{% spaceless %}
    <li class="{{ form.class }}">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock field_row %}
ˇ宁静的妩媚 2024-12-09 09:41:23

只需将“字段”一词替换为您要修改的类型的名称即可。

对于文本字段,您可以这样做,但对于任何类型都是相同的:

{% block text_row %}
{% spaceless %}
    <li class="text">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock text_row %}

或者对于文本区域:

{% block textarea_row %}
{% spaceless %}
    <li class="textarea">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock textarea_row %}

重要的部分是块名称,它应该与您要修改的类型的名称相同。如果没有完全匹配的名称,“field_row”是所有字段类型的默认值。

这也适用于您自己定义的表单类型(从 AbstractType 继承的表单类型,这就是为什么向表单类型添加名称很重要,请参阅 http://symfony.com/doc/2.0/book/forms.html#creating-form-classes)。

Just replace the "field" word with the name of the type you want to modify.

You do it like this for text fields, but it's the same for any type:

{% block text_row %}
{% spaceless %}
    <li class="text">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock text_row %}

or like this for textareas:

{% block textarea_row %}
{% spaceless %}
    <li class="textarea">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock textarea_row %}

The important part is the block name, it should be the same as the name of the type you want to modify. The "field_row" is the default for all field types if there is no exact matching name.

This also works for form-types you defined yourself (the ones that inherit from AbstractType, that's why it's important you add a name to your form-types, see http://symfony.com/doc/2.0/book/forms.html#creating-form-classes).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文