我想渲染一个表单。字段行的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 %}
但如何替换类值?
答案 0 :(得分: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 %}
答案 1 :(得分: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)。