Метод setAttribute
Метод setAttribute класса FormBuilder позволяет добавить произвольный HTML-атрибут к тегу формы или к конкретному полю. Первым параметром передаётся имя атрибута (например, class, id, placeholder или data-*), а вторым - его значение. Этот метод часто используется для стилизации, добавления JavaScript-хуков или передачи дополнительных данных на клиентскую сторону.
Синтаксис
$builder->setAttribute(string $name, mixed $value)
Пример
Давайте создадим форму и добавим ей атрибут class:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentFormExtensionCoreTypeFormType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class FormController extends AbstractController
{
#[Route('/form', name: 'form_index')]
public function index(): Response
{
$builder = $this->createFormBuilder();
$builder->setAttribute('class', 'my-form');
$form = $builder->getForm();
return $this->render('form/index.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
В шаблоне Twig форма отобразится с указанным классом:
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
Результат выполнения кода:
<form name="form" method="post" class="my-form">
...
</form>
Пример
Давайте добавим атрибут placeholder к конкретному полю формы:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class FormController extends AbstractController
{
#[Route('/form', name: 'form_index')]
public function index(): Response
{
$builder = $this->createFormBuilder();
$builder->add('title', TextType::class);
$builder->get('title')->setAttribute('placeholder', 'Enter title');
$form = $builder->getForm();
return $this->render('form/index.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
В шаблоне Twig поле отобразится с подсказкой:
{{ form_start(form) }}
{{ form_row(form.title) }}
{{ form_end(form) }}
Результат выполнения кода:
<input type="text" id="form_title" name="form[title]" placeholder="Enter title">
Смотрите также
-
класс
FormBuilder,
который представляет собой конструктор форм -
метод
add,
который добавляет поле в форму -
метод
get,
который возвращает поле формы по имени -
метод
getForm,
который создаёт объект формы из конструктора