如何在自定义的树枝窗体主题中更改标签位置

时间:2019-02-27 14:01:14

标签: forms symfony twig

我尝试覆盖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的规则中是否有更好的解决方案?

1 个答案:

答案 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>

它将呈现您想要的内容。