Symfony 4: я украсил UrlGeneratorInterface, но он не используется, вместо этого он использует CompiledUrlGenerator - PullRequest
0 голосов
/ 07 октября 2019

Я украсил UrlGeneratorInterface

app.decorator.url_generator:
    class: App\CoreBundle\Routing\Extension\UrlGenerator
    decorates: Symfony\Component\Routing\Generator\UrlGeneratorInterface
    arguments: ['@app.decorator.url_generator.inner']

, но он не используется в тех случаях, когда какой-то пакет в примере выполняет $ this-> generator-> generate (), и я отследил, что Symfony делает через XDebug и CompiledUrlGenerator используетсявместо. Я вижу, где это происходит, а именно в Symfony \ Component \ Routing \ Router в getGenerator, он специально проверяет наличие CompiledUrlGenerator :: class. Но я не хочу отменять ванильный код Symfony. Как я должен переопределить / украсить / расширить какой класс для того, чтобы мой всегда выбирался, так как у меня есть специальные параметры, которые мне нужно добавить к пути. Заранее спасибо!

1 Ответ

0 голосов
/ 07 октября 2019

Я нашел это.

app.decorator.router:
    class: App\CoreBundle\Routing\Extension\Router
    decorates: 'router.default'
    arguments: ['@app.decorator.router.inner']

Украшение этого фактически заставляет все пакеты использовать ваш Маршрутизатор. И как UrlGenerator он имеет функцию генерации, которая может быть расширена.

...