【问题标题】:Render session variable into exception.html.twig将会话变量渲染到 exception.html.twig
【发布时间】:2014-08-13 16:47:16
【问题描述】:

我在将会话变量传递到 exception.html.twig 时遇到问题。 exception.html.twig 的位置是:

\vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Resources\views\Exception\exception.html.twig

在控制器中我尝试了这样的事情:

$sess = $this->session->remove('param');
            $this->render('TwigBundle:Exception:exception.html.twig', array(
    'name' => $sess,
));

在树枝上我试着这样称呼它:

{{ name }}

当我的代码中有 $this->render 时,页面正在加载,正在加载并且不想加载。我该如何解决?

【问题讨论】:

  • 您不需要编辑vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Resources\views\Exception\exception.html.twig 文件。这是不好的做法。您需要覆盖 twig-template 并将代码放入模板中。如何覆盖模板你可以在这里阅读symfony.com/doc/current/book/…
  • 1. $this->session 是什么,你怎么样? 2. 你回复了吗?
  • 感谢您的回复,请问这样的操作怎么做?或者他们有什么方法可以直接从异常控制器中删除会话参数?
  • xurshid29: 1. $this->session 初始化后得到 $this->session = new Session();然后 $this->session->set('param') 在我的控制器中。 2.我返回响应但没有$sess变量,我只想像我写的那样通过render方法将它渲染到视图

标签: php symfony


【解决方案1】:

您需要覆盖错误页面以对其进行自定义,如以下 Symfony 食谱条目中所述: http://symfony.com/doc/current/cookbook/controller/error_pages.html

【讨论】:

  • 您好,看来我已经覆盖了异常页面。从您提供的链接中,我发现我必须覆盖控制器,也许还有 showAction。所以我尝试添加这个动作: $this->session = new Session(); $this->session->remove('userQuery');但它没有帮助,页面仍在加载,甚至不想显示异常页面
  • 我想我可能在这里遗漏了一些东西...您是要抛出一个新异常还是只是改变现有异常的外观和感觉?
【解决方案2】:

我会这样做:

行动:

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

    $session->set('param', $value);
    ...
    $name = $session->remove('param');
    ..

    return $this->render('AcmeDemoBundle:Default:exception.html.twig', ['name' => $name]); // you create a template for exception page as mentioned above
}

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多