我需要一种方法来覆盖树枝中的基本路径()函数。
我已经有了一个分支扩展,但是在那里定义一个路径过滤器并没有为我做到这一点。
扩展默认的路由扩展类。
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更新了,定义可能会发生变化,这种风险始终存在。不太可能的。我手边没有例子。
顺便说一下,你应该避免在现有的问题上添加问题。