Forms 获取细枝中的输入类型以确定标签

Forms 获取细枝中的输入类型以确定标签,forms,symfony,label,twig,Forms,Symfony,Label,Twig,我有这个 {% block form_row %} <div class="form-group"> {{ form_label(form) }} {{ form_widget(form) }} </div> {% endblock form_row %} 可以替代用于渲染特定表单类型的块 例如,如果要覆盖电子邮件输入的标签模板,则应覆盖电子邮件标签块: {% block email_label %} This i

我有这个

{% block form_row %}
    <div class="form-group">   
        {{ form_label(form) }}

        {{ form_widget(form) }}
    </div>
{% endblock form_row %}

可以替代用于渲染特定表单类型的块

例如,如果要覆盖电子邮件输入的标签模板,则应覆盖电子邮件标签块:

{% block email_label %}
This is the template used for all email input
{% endblock %}

{% block form_label %}
This is the fallback template for all other input types
{% endblock %}
通过查看
form.vars.block\u前缀,可以检查可以为特定表单视图覆盖哪些块

例如,对于“email”类型的“personnal_email”字段,它将包含:

array:4 [▼
  0 => "form"
  1 => "text"
  2 => "email"
  3 => "_form_personnal_email"
]
这意味着您可以覆盖块(从不太具体的块开始)
表单(小部件标签错误)
文本(小部件标签错误)
电子邮件(小部件标签错误)
表单个人电子邮件(小部件标签错误)
(最后一个用于覆盖非常特定字段的呈现)

它回答了你的问题吗

更新

以下是您必须做的:

{% block form_row %}
    <div class="form-group">   
        {{ form_label(form) }}

        {{ form_widget(form) }}
    </div>
{% endblock %}

{% block checkbox_label %}
    <!-- Your checkbox specific label -->
{% endblock %}
{%block form_row%}
{{form_标签(form)}
{{form_widget(form)}
{%endblock%}
{%block复选框\u label%}
{%endblock%}

您无法访问
表单行
块中的
类型
,因为它仅在表单小部件的子块中定义(参见示例)

您可以使用自定义格式:

 <div class="form-group">
    {{ form_label(form.your_value, 'Your Title of field', { 'label_attr': {'class': 'col-sm-3 control-label'} }) }}
        <div class="col-sm-9">
            {{ form_widget(form.your_value, { 'attr': {'class': 'form-control selectJS'} }) }}
         </div>
 </div>

{form_label(form.your_值,'your Title of field',{'label_attr':{'class':'col-sm-3 control label'}}}}
{{form_小部件(form.your_值,{'attr':{'class':'form control selectJS'}}}}}
或者您可以使用FormType(如果生成实体,这是Form文件夹中的文件),如:


有用的答案,帮助我发现了新的东西。谢谢我的编辑,我不确定这是否有帮助。我希望能够使用该类型并按我的意愿使用它。您是否尝试覆盖复选框标签块?我已编辑我的答案,以向您显示您必须执行的操作,但仍不允许我编辑订单?如果我想在输入后最后一个标签呢?谢谢你的帮助@Gildas!
 <div class="form-group">
    {{ form_label(form.your_value, 'Your Title of field', { 'label_attr': {'class': 'col-sm-3 control-label'} }) }}
        <div class="col-sm-9">
            {{ form_widget(form.your_value, { 'attr': {'class': 'form-control selectJS'} }) }}
         </div>
 </div>
<?php

namespace Ens\YourBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class NoticeType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title','text', array(
                'label'=>'Title',
                'label_attr'=>array( 'class'=>'col-sm-3 control-label' ),
                'attr'=>array( 'class'=> 'form-control')
            ))
            ->add('text', 'textarea', array(
                'label'=>'Text',
                'label_attr'=>array( 'class'=>'col-sm-3 control-label' ),
                'attr'=>array( 'class'=> 'form-control')
            ))
            ->add('keep_on_top','checkbox', array(
                'label'=>'Keep on top',
                'required'=>false
            ))
            ->add('start', 'date', array(
                'attr'=>array( 'class'=> 'hidden')
            ))
            ->add('end', 'date', array(
                'attr'=>array( 'class'=> 'hidden')
            ))
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Ens\YourBundle\Entity\Notice'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'notice';
    }
}