Создание типа формы с двумя отдельными значениями, которые вы можете добавить несколько раз с помощью symfony 4 - PullRequest
0 голосов
/ 19 апреля 2020

Я новичок в Symfony и хочу что-то сделать, используя symfony 4. Для упрощения скажем, например, у меня есть корзина покупок, где я могу добавлять или удалять статьи И выбирать количество каждой статьи Я выбрал.

Итак, на стороне doctrine у меня есть три сущности:

class Basket {
   protected $id;
   protected $name;
}

class Article{
   protected $id;
   protected $name;
}

class Buying {
   //ManyToOne
   protected $basket;
   //ManyToOne
   protected $article;

   protected $count;
}

Я сделал эту форму, сделав HTML вручную и используя некоторые неприятные JS кода, но теперь я хотел бы сделать это, используя формы Symfony 4.

Я подумал, что лучшим способом было бы создать собственный тип формы для этой сущности "Покупка", которая имела бы два поля, одно из которых представляет собой Select, содержащий все статьи, а другое - значение $ count, а затем имеют возможность добавлять столько «покупок», сколько я хочу, но я не могу придумать, как это сделать, и документация, похоже, не охватывает такого рода дела.

1 Ответ

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

Для этого вам понадобится пара типов форм, и вам может понадобиться немного покачивать свои объекты. Вот суть этого:

Сначала вам нужен один для каждого приобретенного предмета и его количества. EntityType даст вам select со всеми вашими статьями, именно то, что вы ищете.

// BuyingType.php
$builder->add('article', EntityType::class, ['class' => Article::class]);
$builder->add('count', NumberType::class, [
    'constraints' => [
        new Count(['min' => 1]),
      ],
]);

Второй будет CollectionType представляет всю корзину.

// BasketType.php
$builder->add('basket', CollectionType::class, [
    'entry_type' => BuyingType::class,
    'allow_add' => true,
    'allow_delete' => true,
]);
...