为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕尼黑5688855 2022-11-12 13:40:00
我最近在学习 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 文件如下所示:<?phpnamespace 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']            ])        ;    }
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

问题是您没有正确配置实体或表单。目前,在您的实体parent_id中定义如下:


/**

 * @ORM\Column(type="integer", nullable=true)

 */

private $parent_id;

在您的表单中,您希望Category那里有另一个对象:


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

    'class' => Category::class,

您需要parent_id在您的实体中建立一对多关系(其中一个Category可以是另一个的父类别)或使表单中的该字段成为常规ChoiceType和手动提供的选择(通过从数据库中获取可能的类别 ID)。您将在控制器操作中获取这些 id,并将它们$this->createForm作为第三个参数提供给options.


查看完整回答
反对 回复 2022-11-12
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信