Ошибка Symfony Doctrine ArrayCollection - PullRequest
0 голосов
/ 25 мая 2018

Моя текущая настройка описана ниже.То, чего я хочу достичь - этоОдин дистрибьютор может иметь несколько категорий.Но Одна категория может иметь 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();
}

CategoryForm:

$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(),
            ]
        );
}

Я получаю сообщение об ошибке:

Ожидаемый аргумент типа «AppBundle \ Entity \ Category», «Doctrine \ Common \ Collections \ ArrayCollection», заданный

1 Ответ

0 голосов
/ 25 мая 2018

Как я понял, parent не является коллекцией, поэтому измените значение параметра parent parent в false:

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