我最近在学习 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.
- 1 回答
 - 0 关注
 - 111 浏览
 
添加回答
举报
0/150
	提交
		取消
	