如何包括呈现表格的属性“类”

时间:2019-07-09 07:51:05

标签: symfony twig

我有一个联系表单,我正在尝试将一个类放入表单的输入中。

这在ContactType中:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class);
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => Contact::class,
    ]);
}

这在我的树枝上

{{ form_start(form) }}
   {{ form_widget(form.name, {attr: {class: 'myclass', placeholder: 'name'} }) }}
{{ form_end(form) }}

我得到这个html:

<input type="text" class="form-control" id="contact_name" name="contact[name]" required="required" placeholder="name">

它适用于占位符,但不适用于课堂。我试图将attr放入生成器中,它是相同的。类form-control是否覆盖了我的班级?我该如何解决?

4 个答案:

答案 0 :(得分:1)

尝试一下是否有帮助

{{ form_start(form) }}
 {{ form_widget(form.name, {'attr': {'class': 'input-text input-text--white', 'placeholder': 'name'} }) }}
{{ form_end(form) }}

答案 1 :(得分:1)

我相信您无法在form_wdiget上定义两个属性。解决方法是在FormBuilder中或在FormBuilder中进行。

您可以像这样在表单元素上定义属性:

$builder
    ->add('name', TextType::class, [
        'attr' => [
            'class' => 'my-class',
        ],
    ]);

请注意,对于CSS类,它必须位于数组attr中,并且不要与EntityType::class中的类在您的实体中混淆。

$builder
    ->add('name', TextType::class, [
        'placeholder' => 'My place holder',
    ]);

所以您可以同时实现两个目标:

$builder
    ->add('name', TextType::class, [
        'attr' => [
            'class' => 'my-class',
        ],
        'placeholder' => 'My place holder',
    ]);

您可以了解有关表单字段属性here的更多信息。

答案 2 :(得分:1)

我认为您正在使用引导表单主题,请检入配置文件。

,并且在这种情况下,您可以将这一行添加到树枝文件的顶部:

  

{%form_theme表单'form_div_layout.html.twig'%}

答案 3 :(得分:0)

您可以从官方页面阅读它: https://symfony.com/doc/current/reference/forms/types/form.html#attr

只需添加:{'attr':{'属性名称':'value'}}

如下所示

{{ form_widget(form.propertyName, {'attr': {'placeholder': 'name'} }) }}