Forms 如何在标签上添加必填字段的星号?(Symfony表格)

Forms 如何在标签上添加必填字段的星号?(Symfony表格),forms,symfony,required,form-fields,Forms,Symfony,Required,Form Fields,我正在处理Symfony 3,我的表格有一些问题 当我创建一个不需要字段的Symfony表单时,下面是我的代码: 我创建表单: $form = $this->createFormBuilder() ->add('prenom' TextType::class, array( 'label' => 'Votre prénom', 'required' => false ) ->getForm(); 以下是我视图中此字段的代码: {{

我正在处理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"/>
是否可以控制“sup”标签,以便星号
*
可以与我的标签一起使用


我想我可以用jQuery来做,但我想知道是否可以在我的form builder或Twig中做这件事?

是的,您可以覆盖symfony用于呈现小部件的Twig模板或块,请看:

就你而言,你在寻找

供应商/symfony/symfony/src/symfony/Bridge/Twig/Resources/views/Form/Form\u div\u 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 -%}
{%-block form_label-%}
{%如果标签与(false)-%}
{%如果不是复合-%}
{%set label_attr=label_attr|merge({'for':id})%}
{%-endif-%}
{%如果需要-%}
{%set label_attr=label_attr | merge({'class':(label_attr.class | default(“”)~'required')| trim})%}
{%-endif-%}
{%如果标签为空-%}
{%-如果标签_格式不是空-%}
{%set label=label|U格式|替换({
“%name%”:名称,
“%id%”:id,
}) %}
{%-else-%}
{%set label=name |人性化%}
{%-endif-%}
{%-endif-%}
{{translation_domain与(false)相同)?label:label{trans({},translation_domain)}
{%-endif-%}
{%-endblock form_label-%}

在文档中,这里有一个特定的部分

你甚至可以只使用CSS

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

从Symfony 5.1开始,您可以执行以下操作

->add('name', TextType::class, [
    'label' => 'Name <span class="badge badge-danger badge-pill">Required</span>',
    'label_html' => true
])
->add('name',TextType::class[
“标签”=>“需要名称”,
“label_html”=>true
])
label\uhtml
(bool)属性将允许将html直接注入标签并在表单输出上呈现


文档-

这就是我最后做的,我在CSS中使用了“*”并在jQuery中删除了“sup”。这不是最干净的解决方案,但主要的开发人员告诉我使用CSS,我在intership,所以我听^^
->add('name', TextType::class, [
    'label' => 'Name <span class="badge badge-danger badge-pill">Required</span>',
    'label_html' => true
])