bugfix> php > 投稿

私の現在の設定は以下のとおりです。私が達成したいのは。 1つのディストリビューターは複数のカテゴリを持つことができます。だが1 カテゴリには、1つのディストリビュータ1:N<=>を含めることができますN:1。しかし、ディストリビューターの入力フィールドが空であっても、カテゴリーの作成をクリックすると失敗します。

カテゴリー

/**
 * @var string
 *
 * @ORM\Id()
 * @ORM\Column(type="string", nullable=false, unique=true)
 * @ORM\GeneratedValue(strategy="UUID")
 */
private $id;
/**
 * @var string
 * @ORM\Column(type="string", nullable=false)
 */
private $title;
/**
 * @var Distributor
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Distributor", inversedBy="category")
 * @ORM\JoinColumn(referencedColumnName="id")
 */
private $distributor;

ディストリビューター:

/**
 * @ORM\Column(type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;
/**
 * @ORM\Column(type="string", length=100)
 */
private $name;
/**
 * @var ArrayCollection
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\Category", mappedBy="distributor")
 */
private $category;
public function __construct()
{
    $this->category = new ArrayCollection();
}

カテゴリーフォーム:

$builder
        ->add('parent', EntityType::class, [
            'class' => Category::class,
            'choice_label' => 'title',
            'multiple' => true,
            'required' => false,
            'attr' => [
                'class' => 'select2 form-control select2insidemodal js-example-matcher'
            ]
        ])
        ->add('title', TextType::class, [
            'label' => 'Title',
            'required' => true,
            'by_reference' => true
        ])
        ->add('distributor', EntityType::class, [
            'class' => Distributor::class,
            'choice_label' => 'name',
            'required' => false,
            'attr' => [
                'class' => 'select2 form-control select2insidemodal js-example-matcher'
            ]
        ]);

カテゴリアクションの作成

public function createAction(Request $request)
    {
        $category = new Category();
        $categoryForm = $this->createForm(CategoryForm::class, $category);
        $categoryForm->handleRequest($request);

        if ($categoryForm->isSubmitted() && $categoryForm->isValid()) {
            $result = $this->categoryService->create($category);
        }
        return $this->render(
            '@app_bar/Category/categoryNew.twig',
            [
                'form' => $categoryForm->createView(),
            ]
        );
}

私が得るエラーメッセージ:

Expected argument of type "AppBundle\Entity\Category", "Doctrine\Common\Collections\ArrayCollection" given

回答 1 件
  • 私が理解したように、親はコレクションではないので、フォームの親の複数オプションをfalseに変更します:

    ->add('parent', EntityType::class, [
            'class' => Category::class,
            'choice_label' => 'title',
            'multiple' => false,
            'required' => false,
            'attr' => [
                'class' => 'select2 form-control select2insidemodal js-example-matcher'
            ]
        ])
    
    

あなたの答え