Twig不建议使用“ base_template_class”,如何使用较新的Twig覆盖或挂钩以“渲染”?

时间:2019-10-07 09:00:45

标签: twig

我有自己的Template类,它做了这样的事情:

    public function render(array $context)
    {
        // App & Twig
        $app = App::getInstance();
        $twig = $app->twig;

        // Figure out which textdomain should be used
        $prevTextDomain = textdomain(null);
        textdomain($twig->getRenderTextDomain());

        // Added helper variables, like isAdmin, isApi, isFront, am(assetmanager).
        $context = array_merge($context, $twig->getRenderAttributes());

        // Render
        $data = parent::render($context);

        // Set back to previous text domain
        if (isset($prevTextDomain))
        {
            textdomain($prevTextDomain);
        }

        return $data;
    }

但是现在不建议这样做,但是我还没有看到任何新的方法?一定有,因为他们为什么会在不提供新方法的情况下就弃用东西?那么如果没有base_template_class怎么办呢?

我看过一些关于doEnterNode / doLeaveNode钩子是推荐的新方法的讨论。但是据我了解,我可能可以在那里实现该文本域逻辑,但是如何将自定义变量传递给上下文?

doEnterNode / doLeaveNode听起来不仅增加了渲染效果,还增加了开销。

问题是,如何在没有base_template_class的情况下实现这一目标?

0 个答案:

没有答案