В Symfony 3, если вы хотите создать форму как услугу, чтобы вы могли вводить сервисы или аргументы, вы можете сделать это только один раз.Symfony 3 - Forms as Services Issue
То, что я хотел сделать, есть 2 формы в виде сервисов, которые используют один и тот же класс формы типа, но принимать различные аргументы, чтобы позволить мне установить группы проверки использования:
services:
add_page:
class: BackendContent\Form\PageType
arguments: [ "add" ]
tags:
- { name: form.type }
edit_page:
class: BackendContent\Form\PageType
arguments: [ "edit" ]
tags:
- { name: form.type }
Но когда я иду и создать форма в мой контроллер, все, что я могу сделать, это использовать FQCN и не использовать псевдоним вида и т.д.:
$form = $this->container->get('form.factory')->createForm(PageType::class);
Это только позволит мне использовать один из definations услуг.
Единственный способ обойти это создает 2 формы и расширения формы 1 PageType поэтому я затем, AddPageType, EditPageType и PageType, который я действительно не хотел делать.
У кого-нибудь есть решение этой проблемы?
Извините, если это то, что я упустил, но я не могу найти что-либо в документах.
Спасибо!
Источник почему это не имеет смысла иметь один класс с несколькими псевдонимами формы? Особенно учитывая, что это действительно довольно широко используемый метод? – Cerad
Действительно? Когда поля формы все одинаковы? DRY приходит на ум. Моя единственная разница в том, что он говорит, какой набор правил валидации следует использовать. Зачем мне несколько раз занимать классы форм? – coder4show
@ coder4show вы можете настроить такие вещи, используя параметры формы.Более того, если вы установите опцию 'validation_groups' вашего настраиваемого типа формы, я верю, что все ее дочерние элементы наследуют ее автоматически. –