Sylius ResourceBundle: как переопределить службу формы?

В 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 в мой класс формы?

Спасибо !

0

Решение

Та же проблема была недавно решена здесь: 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';
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]