“类型为“int 或 null”的预期参数,属性路径中给出的“对象”

我最近在学习 Symfony。我遇到了一个错误,我打电话时找不到认真的答案。


错误是这样的: 未捕获的PHP 异常 Symfony \ Component \ PropertyAccess \ Exception \ InvalidArgumentException:“类型的预期参数”int或null“,”对象“在属性路径”parent_id“。” 在 /home/vagrant/code/vendor/symfony/property-access/PropertyAccessor.php 第 198 行


我的控制器文件中有这些代码:


public function new(Request $request): Response

{

    $category = new Category();

    $form = $this->createForm(CategoryType::class, $category);

    $form->handleRequest($request);


    if ($form->isSubmitted() && $form->isValid()) {

        $entityManager = $this->getDoctrine()->getManager();

        $entityManager->persist($category);

        $entityManager->flush();


        return $this->redirectToRoute('category_index');

    }


    return $this->render('category/new.html.twig', [

        'category' => $category,

        'form' => $form->createView(),

    ]);

}

我的 FormType 文件如下所示:


<?php


namespace App\Form;


use App\Entity\Category;

use Symfony\Bridge\Doctrine\Form\Type\EntityType;

use Symfony\Component\Form\AbstractType;

use Symfony\Component\Form\FormBuilderInterface;

use Symfony\Component\OptionsResolver\OptionsResolver;


class CategoryType extends AbstractType

{

    public function buildForm(FormBuilderInterface $builder, array $options)

    {

        $builder

            ->add('name', null, [

                'attr' => ['class' => 'form-control'],

            ])

            ->add('slug', null, [

                'attr' => ['class' => 'form-control'],

            ])

            ->add('parent_id', EntityType::class, [

                'class' => Category::class,

                'choice_label' => 'name',

                'attr' => ['class' => 'form-control'],

                'placeholder' => 'Üst Kategori Seçiniz',


            ])

            ->add('title', null, [

                'attr' => ['class' => 'form-control']

            ])

            ->add('description', null, [

                'attr' => ['class' => 'form-control']

            ])

        ;

    }


慕尼黑5688855
浏览 77回答 1
1回答

慕神8447489

问题是您没有正确配置实体或表单。目前,在您的实体parent_id中定义如下:/**&nbsp;* @ORM\Column(type="integer", nullable=true)&nbsp;*/private $parent_id;在您的表单中,您希望Category那里有另一个对象:->add('parent_id', EntityType::class, [&nbsp; &nbsp; 'class' => Category::class,您需要parent_id在您的实体中建立一对多关系(其中一个Category可以是另一个的父类别)或使表单中的该字段成为常规ChoiceType和手动提供的选择(通过从数据库中获取可能的类别 ID)。您将在控制器操作中获取这些 id,并将它们$this->createForm作为第三个参数提供给options.
打开App,查看更多内容
随时随地看视频慕课网APP