【问题标题】:Symfony2: Session Global variable in PHP templateSymfony2:PHP模板中的会话全局变量
【发布时间】:2012-04-24 00:11:10
【问题描述】:

Symfony 文档说:

在每次请求期间,Symfony2 都会设置一个全局模板变量 app 默认情况下在 Twig 和 PHP 模板引擎中。应用程序变量是 一个 GlobalVariables 实例,它可以让你访问一些 自动应用程序特定变量:
app.security - 安全上下文。
app.user - 当前用户对象。
app.request - 请求对象。
app.session - 会话 object.
app.environment - 当前环境(dev、prod、 等)。
app.debug - 如果处于调试模式,则为真。否则为假。

示例:
在树枝上:{{ app.request.method }}
在 PHP 中:echo $app->getRequest()->getMethod() 在树枝上:{{ app.user.username }}
但是对于会话对象:
在树枝上:{{ app.session.varname }}
在 PHP 中:// I don't know, do you know how to call it?

我试过:$session = $app->getSession('uid'); 但是当我尝试将它存储到数据库时它告诉我:

可捕获的致命错误:类的对象 Symfony\Component\HttpFoundation\Session 无法转换为 C:\wamp\www 中的字符串...

PHP 模板资源不足,但在我的情况下,由于某些原因我无法切换。

换句话说,PHP 模板中的等价物是:
{{ app.session.varname }}

【问题讨论】:

    标签: php templates session symfony


    【解决方案1】:

    在树枝上:{{ app.session.varname }}

    在 PHP 中:echo $app->getSession()->get('uid');

    【讨论】:

    • 嘿,你在嘲笑我吗? :) 好人,做到了,非常感谢您的回答。
    • 无意嘲讽。我已将您的问题注释掉并定位,以明确正在解决哪个问题。然后@Daniel Ribereiro 进去编辑了一些东西。不知道为什么,但它搞砸了意图。
    • 您在 twig 中使用 .varname,然后在 PHP 中使用 get('uid')?
    【解决方案2】:

    您是否尝试过 error_log $app->getSession() 以查看它返回的内容?

    error_log(var_dump($app->getSession(), true));
    

    【讨论】:

      【解决方案3】:
      $session = $this->get('session');
      
      if ($session->has('varname')) {
          echo $session->varname
      } 
      

      【讨论】:

      • 您确定在 page.html.php 模板中都可以使用吗?它给了我这个错误:Notice: Undefined property: Symfony\Bundle\FrameworkBundle\Templating\Helper\SessionHelper::$uid in C:\wamp\www\...我已经在每个控制器的默认控制器中使用你的代码并呈现会话值,我在这里的问题试图避免的事情,我需要使用一个全局变量作为Symfony2 文档如上所说。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多