String Symfony forms-应为“类型”的参数;“字符串”;在属性路径处给定

String Symfony forms-应为“类型”的参数;“字符串”;在属性路径处给定,string,symfony,symfony-forms,symfony4,String,Symfony,Symfony Forms,Symfony4,我收到以下错误消息: 类型应为“App\Entity\Artist”或null的参数,属性路径“Artist”处应为“string” 这是我表格的symfony代码 $builder ->add('date', DateType::class, [ 'widget' => 'single_text' ]) ->add('artist', TextType::class) ->add('

我收到以下错误消息: 类型应为“App\Entity\Artist”或null的参数,属性路径“Artist”处应为“string”

这是我表格的symfony代码

$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": {}
}
这是控制器

/**
 * 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时,我没有这个问题


有什么问题?谢谢

问题是您需要在活动中保留艺术家实体。Symfony需要艺术家实体类型,而不是字符串。尝试使用
EntityType::class
而不是
TextType::class

->add('artist', EntityType::class, [
   'class' => Artist::class
]);

有关EntityType字段的更多信息,请

您可以通过编辑问题来共享控制器的代码吗?您好,我在上面添加了控制器代码。感谢您将艺术家字段类型添加为
TextType::class
我有一个错误:缺少必需的选项“class”。未捕获的PHP异常Symfony\Component\OptionsResolver\Exception\MissingOptionsException:“缺少所需的选项“类”。在D:\wamp64\www\app\u music\u events\vendor\Symfony\options resolver\OptionsResolver.PHP第763行{“异常”:{}我有新问题。这是一个积垢。因为我们用entitytype替换了texttype,所以不能更改字段怎么办?通过使用entitytype修改texttype,字段不能更改。最初的问题不是这样解决的。问题的另一个想法?你能详细说明一下吗?我想帮助你,但你的问题还不清楚。在这方面,我将发布一个新问题,其中包含您希望编辑实体类型的代码。我发布了一个新问题
->add('artist', EntityType::class, [
   'class' => Artist::class
]);