Symfony forms-应为属性路径处给定的“string”类型的参数
我收到以下错误消息: 类型应为App\Entity\Artist或null的参数,字符串在属性路径Artist处给定 这是我表格的symfony代码Symfony forms-应为属性路径处给定的“string”类型的参数,symfony,symfony-forms,symfony4,Symfony,Symfony Forms,Symfony4,我收到以下错误消息: 类型应为App\Entity\Artist或null的参数,字符串在属性路径Artist处给定 这是我表格的symfony代码 $builder ->add('date', DateType::class, [ 'widget' => 'single_text' ]) ->add('artist', TextType::class) ->add('City',Te
$builder
->add('date', DateType::class, [
'widget' => 'single_text'
])
->add('artist', TextType::class)
->add('City',TextType::class)
;
这是模板:
{{ form_start(form)}}
{{ form_widget(form)}}
<button class="btn btn-secondary">{{ button|default('Enregistrer')}}</button>
{{ form_end(form)}}
这就是错误:
Uncaught PHP Exception Symfony\Component\PropertyAccess\Exception\InvalidArgumentException: "Expected argument of type "App\Entity\Artist or null", "string" given at property path "artist"." at D:\wamp64\www\app_music_events\vendor\symfony\property-access\PropertyAccessor.php line 173
{
"exception": {}
}
这是控制器CRUD控制器
/**
* Method for editing an event
*
* @Route("/admin/edit/{id}", name="admin.edit", methods="GET|POST")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function edit(Event $event, Request $request): Response
{
$form = $this->createForm(EventType::class, $event);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->em->flush();
$this->addFlash('success', 'Le concert a été modifié avec succès !');
return $this->redirectToRoute('admin.index');
}
return $this->render('admin/edit.html.twig', [
'event' => $event,
'form' => $form->createView()
]
);
}
我不明白。
当我没有在表单中指定Textype时,我没有这个问题
有什么问题?谢谢在您的表单中,您希望添加对象艺术家,这是一个实体。目前,通过->添加“艺术家”,TextType::class可以将其设置为字符串,但实际上并非如此。因此,您应该将类型更改为EntityType,如下所示:
$builder
->add('date', DateType::class, [
'widget' => 'single_text'
])
->add('artist', EntityType::class, [
'class' => Artist::class,
])
//etc...
有关EntityType的更多信息,请参阅 这回答了你的问题吗?
$builder
->add('date', DateType::class, [
'widget' => 'single_text'
])
->add('artist', EntityType::class, [
'class' => Artist::class,
])
//etc...