php - 如何在 Twig 基础模板中设置基于 session 的变量?

标签 php symfony twig template-inheritance

我想将 twig 插入到一个应用程序中,该应用程序需要在基础中合并一些基于 session 的数据。例如,客户端的当前时区显示在页脚中。个别管制员知道这件事没有意义,因为这与他们无关;但另一方面,他们选择并填充 View :

class MyController 
{

    public function index()
    {
        $template = $this->twig->loadTemplate('myPageTemplate.html.twig');
        return $template->render($dataArray);
    }
}

在您选择 View 之前,是否有一些格式正确的方法将数据对象传递给 Twig,并使其可用于基本模板?在启动 Twig_Environment 并将其传入时你会做些什么?

最佳答案

session 变量需要在 Controller 中设置。可以看出in the docs ,它看起来像这样:

public function indexAction(Request $request)
{
    $session = $request->getSession();

    // store an attribute for reuse during a later user request
    $session->set('foo', 'bar');

    // get the attribute set by another controller in another request
    $foobar = $session->get('foobar');

    // use a default value if the attribute doesn't exist
    $filters = $session->get('filters', array());
}

然后在渲染模板时可以轻松传递这些变量,例如:

return $this->redirect($this->generateUrl('home', array('foobar' => $foobar)));

关于php - 如何在 Twig 基础模板中设置基于 session 的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25212814/

相关文章:

php - 页面加载后如何销毁Session?

php - 一对一单向主义

validation - 在 Sonata Admin 中声明唯一验证

php - 拉维尔 : Validation messages for custom rule

php - 在 Laravel 5.4 中更改密码

php - MySQL - 如何选择主键多次出现并且至少有一个其他字段匹配的行?

php - 尝试在类 (Symfony) 上调用方法 "getDoctrine"

Symfony2 : How to get request parameter

Symfony webpack encore twig 函数不起作用

php - Twig:选择某些 block 并渲染它们