symfony 4 base twig方法覆盖

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了symfony 4 base twig方法覆盖相关的知识,希望对你有一定的参考价值。

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

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

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

答案

创建您的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启用:

AppTwigYourExtension:
    tags:
        - { name: twig.extension }

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

以上是关于symfony 4 base twig方法覆盖的主要内容,如果未能解决你的问题,请参考以下文章

从外部文件Symfony Twig调用js函数

在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息

Symfony4 Twig模板错误:变量“小部件”不存在

Symfony 3 - 模板“SonataPageBundle::base_error.html.twig”上的块“标题”不存在

Drupal / Twig / Symfony Routing为base_url返回“null”

Symfony-twig模板表单主题错误