Symfony 如果表单字段具有标签,如何签入细枝
通过迭代生成表单字段时:Symfony 如果表单字段具有标签,如何签入细枝,symfony,twig,symfony-forms,Symfony,Twig,Symfony Forms,通过迭代生成表单字段时: {% for field in form %} {{ form_widget(field); }} {% endform %} 然后,它将封装一个围绕字段输入类型的div块和一个标签(如果它有标签的话) 我想将其分为标签和小部件: <div class="form-group"> {% if field.vars.label is not null %} {{ form_lab
{% for field in form %}
{{ form_widget(field); }}
{% endform %}
然后,它将封装一个围绕字段输入类型的div块和一个标签(如果它有标签的话)
我想将其分为标签和小部件:
<div class="form-group">
{% if field.vars.label is not null %}
{{ form_label(field) }}
{% endif %}
{{ form_widget(field) }}
</div>
{%如果field.vars.label不是null%}
{{form_标签(字段)}}
{%endif%}
{{form_widget(field)}
但是field.vars.label始终为空。顺便说一句,当我在没有条件的情况下生成时,它会正确地显示标签
如何获取条件检查的标签值
提前感谢。根据变量参考的形式
尝试:
{% if field.vars.attr.label is not null %}
而不是:
{% if field.vars.label is not null %}
将标签更改为false,form_label()细枝函数将自动忽略它 下面是表单_div_layout.html.twig文件中的代码片段(请参见第2行):
{%-block form_label-%}
{%如果标签与(false)-%}
{%如果不是复合-%}
{%set label_attr=label_attr|merge({'for':id})%}
{%-endif-%}
{%如果需要-%}
{%set label_attr=label_attr | merge({'class':(label_attr.class | default(“”)~'required')| trim})%}
{%-endif-%}
{%如果标签为空-%}
{%-如果标签_格式不是空-%}
{%set label=label|U格式|替换({
“%name%”:名称,
“%id%”:id,
}) %}
{%-else-%}
{%set label=name |人性化%}
{%-endif-%}
{%-endif-%}
{{translation_domain与(false)相同)?label:label{trans({},translation_domain)}
{%-endif-%}
{%-endblock form_label-%}
对象“Symfony\Component\Form\FormView”的方法“label”不存在。结果是:(@Roland抱歉,请再次尝试field.attr.label
alsosorry@Roland,而不是源代码,您应该通过field.vars.attr.label
访问label字段。检查我的答案updateEvgeny Soynov是否正确,这些字段没有标签,并使用“name”,但尚不清楚form_小部件如何确定哪个字段必须有标签,以及如果未设置标签,notTwig使用哪个name
。因此您的检查应该类似于{%if field.vars.label不为空,field.vars.name不为空%}
。这看起来就像你试图实现的目标在cookbook中描述的一样。你是对的。问题是,所有字段都有名称。我仍然不知道form_小部件如何决定哪些字段有标签,哪些字段没有标签,这会导致我妥协:)我想避免更改formbuilder,直到现在。谢谢,我应该接受这个解决方案
{%- block form_label -%}
{% if label is not same as(false) -%}
{% if not compound -%}
{% set label_attr = label_attr|merge({'for': id}) %}
{%- endif -%}
{% if required -%}
{% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
{%- endif -%}
{% if label is empty -%}
{%- if label_format is not empty -%}
{% set label = label_format|replace({
'%name%': name,
'%id%': id,
}) %}
{%- else -%}
{% set label = name|humanize %}
{%- endif -%}
{%- endif -%}
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</label>
{%- endif -%}
{%- endblock form_label -%}