Как включить атрибут «класс», отображающий форму - PullRequest
1 голос
/ 09 июля 2019

У меня есть контактная форма, и я пытаюсь добавить класс для ввода моей формы.

Это в 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 ]

1 голос
/ 09 июля 2019

Я считаю, что вы не можете определить два атрибута для 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',
    ]);

Подробнее об атрибутах полей формы можно прочитать здесь .

1 голос
/ 09 июля 2019

Я думаю, что вы используете тему формы начальной загрузки, войдите в конфигурационный файл.

и в этом случае вы можете добавить эту строку вверху файла ветки:

{% form_theme form 'form_div_layout.html.twig'%}

1 голос
/ 09 июля 2019

Попробуйте, если вам поможет

{{ form_start(form) }}
 {{ form_widget(form.name, {'attr': {'class': 'input-text input-text--white', 'placeholder': 'name'} }) }}
{{ form_end(form) }}
0 голосов
/ 10 июля 2019

Вы можете прочитать его на официальной странице: https://symfony.com/doc/current/reference/forms/types/form.html#attr

Просто добавьте: {'attr': {'имя атрибута': 'значение'}}

Как показано ниже

{{ form_widget(form.propertyName, {'attr': {'placeholder': 'name'} }) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...