У меня есть 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;