Мне нужен способ переопределить основную функцию path () в ветке.
У меня уже есть расширение ветки, но определение фильтра траектории не помогло мне.
Заранее спасибо.
Расширьте класс расширения маршрутизации по умолчанию.
use Symfony\Bridge\Twig\Extension\RoutingExtension; class MyRoutingExtension extends RoutingExtension { public function getPath($name, $parameters = array(), $relative = false) { //some code } }
Затем укажите свой класс с помощью параметра:
parameters: twig.extension.routing.class: MyNamespace\MyRoutingExtension
================================================== ====================
Чтобы добавить больше зависимостей, таких как домен, в котором вам в основном нужно скопировать определение службы, а затем добавить свой материал:
# services.yml twig.extension.routing: class: '%twig.extension.routing.class%' public: false arguments: - '@router' - 'domain' class MyRoutingExtension extends RoutingExtension { protected $domain; public function __construct($router,$domain) { parent::__construct($router); $this->domain = $domain; } }
Вы также можете добавить аргумент к определению службы из внутреннего расширения DependencyInjection. Это может быть немного более надежным, чем копирование определения службы. Всегда существует риск, что определение может измениться, если symfony обновляется. Вряд ли. У меня нет подходящего примера.
Кстати, вам, вероятно, следует избегать добавления вопроса к существующему вопросу. Некоторые из нижеперечисленных избирателей будут смутно смотреть.