3

我想渲染一个表格。字段行的 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 %}

但是如何替换类值?

4

2 回答 2

0

您可以尝试将公共成员附加到您的 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 %}
于 2011-09-07T09:37:37.970 回答
0

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

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

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

或者像这样的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 %}

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

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

于 2012-02-11T05:16:40.560 回答