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