Twig从基本视图渲染其他控制器

时间:2018-10-26 12:05:37

标签: php twig

我单独使用树枝,而不是从Symfony内部使用。

我有基本布局base.html。其他布局扩展了这一布局,并且看起来还不错。

如果我有一个控制器操作BlogPosts,它传递了一系列Blogpost,那么我将渲染Blog布局,该布局从基本布局扩展到可以看到该内容。可以按预期工作

现在,我想将变量传递给基本模板,因此它在每个页面上都可见。我该怎么办?

我找到了this article,但这是出于symfony的原因。 Twig本身没有渲染功能。

1 个答案:

答案 0 :(得分:1)

如果您使用的是没有symfony的树枝,我认为您的项目目录结构类似于:

project
  - templates
     - base.html.twig
     - index.html.twig
  - vendor
  - index.php

因此,您的index.php代码应类似于:

require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates', getcwd());
$twig = new Twig_Environment($loader);

echo $twig->render('index.html.twig', array('name' => 'Hello'));

因此,如果您想将一些变量传递给基本模板,则twig可以通过方法为全局使用添加价值

require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates', getcwd());
$twig = new Twig_Environment($loader);
$twig->addGlobal('title', 'HomePage');

echo $twig->render('index.html.twig', array('name' => 'Hello'));

我希望有帮助