gpt4 book ai didi

symfony - 如何在 Symfony Twig 渲染中检测小部件类型?

转载 作者:行者123 更新时间:2023-12-01 09:57:30 25 4
gpt4 key购买 nike

为了呈现表单行,我需要检测正在呈现什么类型的小部件。例如对于复选框,我想要输入之前的标签,所以我这样做了:

{% 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 %}

我使用 form.vars.block_prefixes[1] 来确定它要呈现的小部件。那正确吗?或者有没有更好的方法?我似乎在文档中找不到它。

最佳答案

如果您看到 symfony cookbook ,你可以找到:

the block name is a combination of the field type and which part of the field is being rendered (e.g. widget, label, errors, row)

因此,要自定义复选框表单类型呈现,您可以为小部件顺序定义 checkbox_widget block 和 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 %}

关于symfony - 如何在 Symfony Twig 渲染中检测小部件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com