Как изменить положение метки в настраиваемой теме веточки - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь переопределить тему формы Symfony.Это работает, это хорошая новость!Но я бы хотел изменить положение метки внутри.

Мой конструктор форм:

$builder->add('phone', IntegerType::class, [
        'label' => 'Telefonnummer',
        'constraints' => [
            new NotBlank(),
        ],
        'attr' => [
            'class' => 'input-field__input',
        ],
        'label_attr' => [
            'class' => 'input-field__label',
        ]
    ]);

Мой переопределенный integer_widget:

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

Что я получил:

<label>Telefonnummer</label>
<div class="input-field">
    <input/>
</div>

Метка стоит перед div и не находится внутри.Но мне это нужно внутри!

То, что я пробовал (работает, но, на мой взгляд, это беспорядок):

{% block integer_widget %}
<div class="input-field">
    {% block form_label %}
    {% endblock %}
    <label class="{{ label_attr.class }}">{{ label }}</label>
    {% set type = type|default('number') %}
    {{ block('form_widget_simple') }}
</div>
{% endblock %}

Таким образом, все выглядит так, как я и ожидал.Но это просто обходной путь, потому что я удалил метку происхождения, добавив пустой блок 'form_label'.

Есть ли лучшее решение для этого в рамках правил Symfony / Twig?

1 Ответ

0 голосов
/ 27 февраля 2019

Если все, что вам нужно, это:

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

Это сделает то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...