我有一个用twig文件渲染的表单:
表格:
$builder
->add('text', CKEditorType::class, array (
'config_name' => 'my_config',
'label' => "tracker.event.labels.text"
))
->add('effTime', IntegerType::class, array (
'data' => 0,
'label' => "tracker.event.labels.efftime"
))
->add('private', CheckboxType::class, array(
'label' => "tracker.event.private.title",
'data' => false,
'required' => false
))
;
twig file:
{% form_theme formadd 'AtgpAppBundle:_Form:_form.html.twig' %}
{{ form_start(formadd) }}
{{ form_errors(formadd) }}
<div class ="row">
<span class="col-md-2">
{{form_label(formadd.text)}}
</span>
<span class="col-md-10">
{{form_errors(formadd.text)}}
{{form_widget(formadd.text)}}
</span>
</div>
<div class="row">
<span class="col-md-2">
{{form_label(formadd.effTime)}}
</span>
<span class="col-md-10">
{{form_errors(formadd.effTime)}}
{{form_widget(formadd.effTime)}}
</span>
</div>
<div class="row">
<span class="col-md-2">
{{form_label(formadd.private)}}
</span>
<span class="col-md-1">
{{form_errors(formadd.private)}}
{{form_widget(formadd.private) }}
</span>
<span class="col-md-9">
{{ "tracker.event.private.help" |trans }}
</span>
</div>
{{ form_end(formadd) }}
除最后一行外,一切都很顺利。
col-md-2,其中“private”的标签应为空。
由于某种原因,form_widget创建了另一个
<div class="row">
跨度“class = col-md-1”
标签和内部的复选框。
Here's how the whole row renders
我希望标签在正确的位置正确显示。简单地忽略了form_label()指令,如果我不写它,它会呈现相同的颜色。
我该怎么做,我的代码出了什么问题?
谢谢
编辑:我发现我可以将标签值设置为false并直接在twig中写入。 但是我仍然不知道为什么用布尔值忽略指令form_label。
答案 0 :(得分:0)
狂野猜测:您的所有标签都像tracker.event.labels.XXXXX
,而最后一个标签tracker.event.private.title
不应该是tracker.event.labels.private.title
答案 1 :(得分:0)
我在the documentation找到了我的问题的答案。
我们可以读到这个:
当您使用Bootstrap表单主题并手动呈现字段时,为复选框/无线电字段调用form_label()不会显示任何内容。由于Bootstrap内部,标签已经由form_widget()显示。
所以我需要做的是从这个覆盖checkbox-widget块:
{% block checkbox_widget -%}
{%- set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
{% if 'checkbox-inline' in parent_label_class %}
{{- form_label(form, null, { widget: parent() }) -}}
{% else -%}
<div class="checkbox">
{{- form_label(form, null, { widget: parent() }) -}}
</div>
{%- endif %}
{%- endblock checkbox_widget %}
对此:
{% block checkbox_widget %}
<input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
{% endblock %}