Symfony Forms: постоянный объект с конструктором для Databese

Я пытаюсь сохранить объект сущности в базе данных с помощью форм Symfony. У объекта есть конструктор, поэтому я даю фиктивные данные объекта, но я не могу изменить эти данные с помощью форм. Есть ли у кого-нибудь решение, как создать объект, требующий конструктора?

 public function new(Request $request)
    {

        $player = new Player("Dummy",0);




        $form = $this->createFormBuilder($player)
            ->add('name', TextType::class)
            ->add('points', IntegerType::class)
            ->add('save', SubmitType::class, array('label' => 'Create Player'))
            ->getForm();

        $form->handleRequest($request);

        $data = $form->getData();
        $name = $data->getName();
       error_log($name);




        $this->PlayerRepository->store($player);



        return $this->render('default/new.html.twig', array(
            'form' => $form->createView(),
        ));
    }

$ name всегда имеет значение «Dummy», независимо от того, что я набираю в форме.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
34
2

Ответы 2

Вы сохраняете $player здесь:

$this->PlayerRepository->store($player);

Но ваши фактические данные плеера из формы находятся в $data, и этот $data должен быть сохранен:

$this->PlayerRepository->store($data);

Фактически, из-за того, как работают формы Symfony, $ player будет содержать в себе любую обновленную информацию. В этом случае использование getData не требуется. Исходный плакат действительно должен следовать примерам в документации.

Cerad 06.10.2018 15:46

Спасибо вам большое за ваш ответ. Но значения, содержащиеся в данных, всегда равны «фиктивным» и 0. Таким образом, похоже, есть ошибка, заключающаяся в том, что данные, введенные в форму, фактически не отправляются. Поэтому form-> getData не дает мне нужных данных.

Markus 06.10.2018 19:22

Ладно, кажется, я нашел ошибку.

Я не определял маршрут POST для того же контроллера, который создает представление.

простите за это :)

Другие вопросы по теме