Ожидается, что данные представления формы будут экземпляром класса App \ Entity \ SubmitNew. - PullRequest
0 голосов
/ 23 марта 2019

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

Ожидается, что данные представления формы будут экземпляром класса App \ Entity.\ SubmitNew, но является (n) строкой.Вы можете избежать этой ошибки, установив для параметра data_class значение null или добавив преобразователь представления, который преобразует (n) строку в экземпляр App \ Entity \ SubmitNew.

Controller.php

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

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

SubmitNewType.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 %}

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

1 Ответ

1 голос
/ 23 марта 2019
{
    $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
        ]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...