Ожидается, что данные представления формы будут экземпляром класса App\Entity\SubmitNew

Я хочу создать простую форму, которая позволяет пользователям добавлять текст в базу данных, но я получаю следующую ошибку:

The form's view data is expected to be an instance of class App\Entity\SubmitNew, but is a(n) string. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) string to an instance of App\Entity\SubmitNew.

Контроллер.php

    public function index()
    {
        $form = $this->createForm(SubmitNewType::class, SubmitType::class);

        return $this->render('submit_new/index.html.twig', [
            'form' => $form->createView()
        ]);
    }

ОтправитьНовыйТип.php

class SubmitNewType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('question')
            ->add('answer')
        ;
    }

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

html.twig

{% extends 'base.html.twig' %}

{% block title %}Hello {% endblock %}

{% block body %}
    {{ form(form) }}
{% endblock %}

Я не уверен, что я делаю неправильно, так как у меня нет синтаксической ошибки любого рода. Может кто-нибудь объяснить, что я делаю неправильно?

Разве второй аргумент createForm() не должен быть экземпляром объекта? Вы передаете туда имя класса.

Darragh Enright 23.03.2019 11:55

Эй, да, я отредактировал его, но у меня все еще есть та же ошибка.

roibubble 23.03.2019 15:23
Стоит ли изучать 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 и хотите разрабатывать...
0
2
356
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
{
    $form = $this->createForm(SubmitNewType::class, SubmitNew::class); //You had SubmitType, when you have to pass the class that you defined in your SubmitNewType

    return $this->render('submit_new/index.html.twig', [
        'form' => $form->createView()
    ]);
}

Вы передавали SubmitType вместо SubmitNew, как указано в вашем SubmitNewType.

{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('question')
            ->add('answer')
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => SubmitNew::class, //You defined SubmitNew here, so, you have to pass this class in createForm
        ]);
    }
}

Эй, мой код теперь похож на 1:1, как вы прокомментировали. Я все еще получаю то же сообщение об ошибке. Мой $form это $form = $this->createForm(SubmitNewType::class, SubmitNew::class); and my data_class`` это 'data_class' => SubmitNew::class, ``

roibubble 23.03.2019 14:47

Я установил свои данные как нулевые, и это работает, но я не думаю, что это правильное решение.

roibubble 23.03.2019 15:40

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