Как я могу поставить звездочку моего обязательного поля на этикетке? (Форма Symfony)

Я работаю над Symfony 3, и у меня возникли проблемы с формой.

Когда я создаю форму Symfony с необязательным полем, вот мой код:

Я создаю форму:

$form = $this->createFormBuilder()
  ->add('prenom' TextType::class, array(
    'label'    => 'Votre prénom',
    'required' => false
  )
  ->getForm();

Вот код на мой взгляд для этого поля:

{{ form_label(form.prenom) }}
{{ form_errors(form.prenom) }}
{{ form_widget(form.prenom) }}

И это HTML-код, который у меня есть:

<label class="control-label" for="contact_prenom">Votre prénom</label>
<input type="text" id="contact_prenom" name="contact[prenom]" class="form-control"/>

Теперь, если я сделаю то же самое без 'require' => false на моем FormBuilder вот HTML- код, который я получаю:

<label class="control-label required" for="contact_prenom">Votre prénom</label>
<sup class="required" title="Champ obligatoire">
        <i class="fa fa-asterisk"></i>
</sup>
<input type="text" id="contact_prenom" name="contact[prenom]" required="required" class="form-control" />

Можно ли контролировать тег "sup", чтобы звездочка * может быть с моим лейблом?

Я думаю, что я могу сделать это с помощью jQuery, но я хотел бы знать , возможно ли это сделать на моем конструкторе форм или в Twig?

3 ответа

Решение

В документе есть определенный раздел здесь http://symfony.com/doc/current/form/form_customization.html

Вы даже можете сделать только с CSS

label.required:before {
    content: "* ";
}

As of Symfony 5.1 you can do the following

      ->add('name', TextType::class, [
    'label' => 'Name <span class="badge badge-danger badge-pill">Required</span>',
    'label_html' => true
])

The label_html (bool) property will allow HTML to be injected into the label directly and render on the form output.

Documentation - https://symfony.com/doc/current/reference/forms/types/form.html#label-html

Да, вы можете переопределить шаблон ветки или блок, который Symfony использует для визуализации вашего виджета, посмотрите на: http://symfony.com/doc/current/templating/overriding.html

В вашем случае вы ищете

продавец /Symfony/ Symfony / SRC /Symfony/ Мост / Twig / Ресурсы / мнение / Форма /form_div_layout.html.twig

И это будет блок, который вы хотите переопределить:

{%- 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{% if label_attr %}{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}{% endif %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</label>
    {%- endif -%}
{%- endblock form_label -%}
Другие вопросы по тегам