Я застрял с проблемой в Symfony в течение нескольких дней, и ничего не могу найти в Google.
У меня есть две таблицы.
Учетная запись:
AppBundle\Entity\Account:
type: entity
fields:
name:
type: string
nullable: true
length: 255
oneToMany:
towns:
targetEntity: AppBundle\Entity\Town
mappedBy: owner
cascade: ['persist']
Город:
AppBundle\Entity\Town:
type: entity
fields:
name:
type: string
nullable: true
length: 255
manyToOne:
owner:
targetEntity: AppBundle\Entity\Account
inversedBy: towns
И у меня есть массив с именами:
$names = ['New York','Berlin'];
Я хочу форму вкоторый пользователь может проверить имя из массива (флажки).Когда пользователь проверяет «Нью-Йорк» и отправляет форму, я хочу новую сущность Town
с «Нью-Йорк» в поле name
.Если пользователь снимает флажок «Нью-Йорк», я хочу удалить объект.
До сих пор я пробовал его с EntityType
, CollectionType
и ChoiceType
.Лучшее, что я могу получить - это ChoiceType.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('towns', ChoiceType::class,
[
'choices' =>
[
new Town('New York'),
new Town('Berlin'),
],
'choice_label' => function (Town $town, $key, $index) {
return $town->getName();
},
'choice_value' => function (Town $town) {
return $town->getName();
},
'expanded' => TRUE,
'multiple' => TRUE,
'required' => FALSE,
]
);
}
Но он будет добавлять новую сущность каждый раз, когда пользователь отправляет форму для любого проверенного города, и не удаляет непроверенный ...