Я хочу создать простую форму, которая позволяет пользователям добавлять текст в базу данных, но я получаю следующую ошибку:
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 %}
Я не уверен, что я делаю неправильно, так как у меня нет синтаксической ошибки любого рода. Может кто-нибудь объяснить, что я делаю неправильно?
Эй, да, я отредактировал его, но у меня все еще есть та же ошибка.






{
$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, ``
Я установил свои данные как нулевые, и это работает, но я не думаю, что это правильное решение.
Разве второй аргумент
createForm()не должен быть экземпляром объекта? Вы передаете туда имя класса.