Ich muss verschiedene Metadaten-Attribute für jede Route implementieren, und eine Idee, die ich habe, ist die Attribute direkt auf jede Route anzuwenden, für einen externen Metadaten-Listener zu verwenden.Symfony: Service in Route auflösen
Zum Beispiel würde der Listener den auf der untenstehenden Route definierten Dienst (@example_title_resolver
) verwenden, um in eine Form des Seitentitels aufzulösen.
example_route:
path: /blah/blah
defaults:
_controller: MyBundle:MyController:index
meta:
title:
resolver: '@example_title_resolver'
value: 'Example | %%value_to_be_resolved%% | %default_title_suffix%'
Leider, während params gelöst werden, habe ich seit Dienstleistungen nicht entdeckt. Die einzige Möglichkeit, diesen Ansatz zu umgehen, würde darin bestehen, den Dienstcontainer direkt in den Listener zu stecken und nach dem verpönten Dienst zu fragen.
Gibt es bessere Alternativen? Angesichts der Tatsache, dass ich wirklich Schwierigkeiten hatte, über das Auflösen von Diensten innerhalb von Routen herauszufinden, ist dieser ganze Ansatz etwas, das vermieden werden sollte?
Ich habe noch nie 'defaults' auf diese Weise gesehen. Ist es irgendwo dokumentiert? – martin
Bei Kernel-Listenern wird das Injizieren des Containers als akzeptabel betrachtet. Zumindest mein ich. – Cerad
@Martin Nicht dokumentiert irgendwo, nur meine Naivität erwartet, dass es funktioniert, gegebene Parameter sind gelöst (@see https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Routing/Router. php # L87). Ich hätte auch 'Optionen' dafür verwenden können, aber es gilt das gleiche Problem. –