Php 细枝从基础视图渲染其他控制器

Php 细枝从基础视图渲染其他控制器,php,twig,Php,Twig,我单独使用细枝,而不是从Symfony内部使用 我有base布局base.html。其他布局扩展了该布局,似乎工作正常 如果我有一个controlleraction BlogPosts,它传递一个BlogPosts数组,我将呈现blog布局,它从基本布局扩展到查看该内容。这是我们的初衷 现在,我想把变量传递给基本模板,这样它在每个页面上都是可见的。我该怎么做 我找到了,但这提到了symfony。twig本身没有渲染功能。如果您使用的twig没有symfony,我假设您的项目目录结构与此类似: p

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

我有base布局base.html。其他布局扩展了该布局,似乎工作正常

如果我有一个controlleraction BlogPosts,它传递一个BlogPosts数组,我将呈现blog布局,它从基本布局扩展到查看该内容。这是我们的初衷

现在,我想把变量传递给基本模板,这样它在每个页面上都是可见的。我该怎么做


我找到了,但这提到了symfony。twig本身没有渲染功能。

如果您使用的twig没有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'));

我希望这对你有帮助。那是个坏习惯。控制器应该已经完成了它们的工作,收集了视图变量,并将它们发送到视图进行渲染。从细枝跳回另一个控制器动作似乎是一个非常糟糕的主意。为什么要这样做?考虑在博客日志中添加一个公共方法,或者将方法的结果作为Tigg中的全局变量添加,或者编写一个自定义的Tigg函数,该函数能够调用该公共方法。