Symfony ArrayCollection - PullRequest
       35

Symfony ArrayCollection

0 голосов
/ 22 апреля 2020

У меня есть 2 объекта: Category и Article со следующим соотношением:

  • Каждый Article имеет Один Category.
  • Каждый Category может иметь Много Article.

Проблема :

Я хочу добавьте новую категорию, используя эту форму:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class)
        ->add('submit', SubmitType::class, [
            'label' => 'Add a new category'
        ])
    ;
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => Category::class,
    ]);
}

Вот ошибка, которую я получаю, когда ввожу строку значение в имя поля:

Name Error This value should be of type array|IteratorAggregate.

Я никогда не использовал ArrayCollection / Отношение в symfony, но я пытался изменить TextType::class на CollectionType::class, он дает мне белый квадрат, и я не могу набрать что угодно.

В более обобщенном c вопросе:
Как можно проверить значения в форме без ошибки: This value should be of type array|IteratorAggregate.

Category

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\Column(type="string", length=255)
 * @Assert\Unique(message="Cette catégorie existe déjà")
 */
private $name;

/**
 * @return mixed
 */
public function getId()
{
    return $this->id;
}

/**
 * @return mixed
 */
public function getName()
{
    return $this->name;
}

/**
 * @param $name
 * @return Collection|null
 */
public function setName($name): ?Collection
{
    return $this->name = $name;
}


Артикул

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\Column(type="text")
 */
private $title;

/**
 * @ORM\Column(type="text")
 */
private $content;

/**
 * @ORM\Column(type="datetime")
 */
private $createdAt;

/**
 * @ORM\Column(type="string", nullable=true)
 */
private $image;

/**
 * @ORM\Column(type="datetime", nullable=true)
 */
private $editedAt;

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Category")
 */
private $category;
...