symfony 4 base twig方法覆盖

问题描述 投票:0回答:1

如何在启用autowire时覆盖twig的path()方法?例如:

class ExampleRoutingExtension extends RoutingExtension
{
    public function getPath($name, $parameters = array(), $relative = false)
    {
        return '/testEndpoint';
    }
}

使用此类进行自动装配没有问题(构造函数创建对象),但getPath()方法不会覆盖父getPath()

symfony twig symfony4 twig-extension
1个回答
0
投票

创建您的Twig扩展:

class AppExtension extends \Twig_Extension
{
    public function getFunctions(): array
    {
        return [
            new \Twig_SimpleFunction('path', [$this, 'path']),
        ];
    }

    public function path(string $name, array $parameters = array(), bool $relative = false): string
    {
        return '/testEndpoint';
    }
}

并通过services.yml启用:

App\Twig\YourExtension:
    tags:
        - { name: twig.extension }

您可以在__construct()中注入服务(例如:路由)

© www.soinside.com 2019 - 2024. All rights reserved.