为了渲染表单行,我需要检测正在呈现的窗口小部件的类型.例如,对于复选框,我想在输入之前输入标签,所以我这样做了:
{% block form_row %}
{% spaceless %}
<div class="row">
{% if form.vars.block_prefixes[1] == "checkbox" %}
{{ form_widget(form) }}
{{ form_label(form) }}
{{ form_errors(form) }}
{% else %}
<div class="small-12 medium-3 columns">
{{ form_label(form) }}
</div>
{{ form_widget(form) }}
{{ form_errors(form) }}
{% endif %}
</div>
{% endspaceless %}
{% endblock form_row %}
Run Code Online (Sandbox Code Playgroud)
我使用form.vars.block_prefixes [1]来确定它要渲染的小部件.是对的吗?还是有更好的方法?我似乎无法在文档中找到它.
如果你看到symfony cookbook,你会发现:
块名称是字段类型的组合,以及正在呈现字段的哪个部分(例如,小部件,标签,错误,行)
因此,要自定义复选框表单类型呈现,您可以为小部件顺序定义checkbox_widget块和checkbox_row:
{% block checkbox_widget %}
{% spaceless %}
<label {% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
{{ label }}
</label>
<input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
{% endspaceless %}
{% endblock checkbox_widget %}
{% block checkbox_row %}
{% spaceless %}
{{ form_widget(form) }}
{{ form_errors(form) }}
{% endspaceless %}
{% endblock checkbox_row %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3243 次 |
| 最近记录: |