我尝试覆盖symfony表单主题。它有效,这是个好消息! 但我想更改标签在里面的位置。
我的表单生成器:
output_file=test_file_'date +%m%d%Y'
${PARAM} isql << EOF
select * from tempdb..M3_STI_extracts_checking
GO > ${output_file}
EOF
我覆盖的integer_widget:
$builder->add('phone', IntegerType::class, [
'label' => 'Telefonnummer',
'constraints' => [
new NotBlank(),
],
'attr' => [
'class' => 'input-field__input',
],
'label_attr' => [
'class' => 'input-field__label',
]
]);
我所期望的(简短示例):
{% block integer_widget %}
<div class="input-field">
{% set type = type|default('number') %}
{{ block('form_widget_simple') }}
</div>
{% endblock %}
我得到了什么
<div class="input-field">
<label>Telefonnummer</label>
<input/>
</div>
标签位于div之前,并且不在内部。但是我在里面需要它!
我尝试过的方法(有效,但我认为这是一团糟):
<label>Telefonnummer</label>
<div class="input-field">
<input/>
</div>
这样看起来就像我预期的那样。但这只是一种解决方法,因为我通过添加一个空的“ form_label”块删除了原始标签。
在symfony / twig的规则中是否有更好的解决方案?
答案 0 :(得分:3)
如果您只想要这个:
<div class="input-field">
<label for="_input-a">Telefonnummer</label>
<input id="_input-a" name="_name" value="_value">
</div>
然后,您就不必麻烦自己使用自定义的integer_widget
这样做就足够了:
<div class="input-field">
{{ form_label(form.phone) }}
{{ form_widget(form.phone) }}
</div>
它将呈现您想要的内容。