@symnoob

Как заранее заполнить поля формы?

Добрый день,

возможно ли предварительно заполнить новую форму, перед предоставлением для заполнения пользователю?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Надо заполнить объект, который вы передаете в форму, нужными данными:
$post = new Post();
// Заполняем поля, которые присутствуют в форме
$post->setPublishedAt(new \DateTime());
$post->setTitle('New title');

// Если объекты не используются, то заполнять надо массив
// $post = [];
// $post['publishedAt'] = new \DateTime();
// $post['title'] = 'New title';

$form = $this->createForm(PostType::class, $post);

// ...

return $this->render('post.html.twig', [
    'form' => $form->createView(),
])


Если вдруг нет (почему?) возможности передать заполненные данные, то можно их инициализировать внутри FormType:
$builder->get('publishedAt')->setData(new \DateTime());
$builder->get('title')->setData('New title');

либо
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
    $data = $event->getData();
    if ($data !== null) {
        return;
    }
    $event->setData([
        'title' => 'New title',
        'publishedAt' => new \DateTime(),
    ]);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы