В ResourceBundle я настроил ресурс «charge.quote»:
sylius_resource:
resources:
charge.quote:
classes:
controller: ChargeBundle\Controller\QuoteController
model: ChargeBundle\Entity\Quote
repository: ChargeBundle\Repository\QuoteRepository
form:
default: ChargeBundle\Form\QuoteType
Я хотел бы знать, как я могу переопределить службу формы, сгенерированную как charge.form.type.quote ResourceBundle. Цель состоит в том, чтобы иметь возможность доступа к контейнеру услуг из QuoteType.
Я попытался объявить другой сервис для переопределения сервиса, сгенерированного ResourceBundle, например:
<service id="charge.form.type.quote" class="%charge.form.type.quote.class%">
<argument type="service" id="service_container" />
<tag name="form.type" />
</service>
Но пользовательская форма игнорируется: ResourceBundle генерирует общую форму из сущности.
Любая идея передать Service Container в мой класс формы?
Спасибо !
Та же проблема была недавно решена здесь: https://github.com/Sylius/Sylius/issues/3843
Вкратце ответы взяты из вопроса:
Вы просто определяете сервис с таким же именем, например, app.form.type.book и присваиваете ему псевдоним app_book. Силиус будет использовать его с этого момента. 🙂
sylius_resource:
resources:
zdg.registration:
templates: EGBundle:Backend/Registration
classes:
model: ZDG\EGBundle\Entity\Registration
Сервисы:
services:
zdg.eg.type.registration:
class: ZDG\EGBundle\Form\Type\RegistrationType
tags:
- { name: form.type, alias: zdg_registration }
arguments: [@doctrine, @sylius.context.locale]
Ваше имя типа формы должно соответствовать псевдониму. добавить к вашему типу:
public function getName()
{
return 'zdg_registration';
}
Других решений пока нет …