【问题标题】:Silex (Symfony2 micro framework) redirect in bootstrap.php在 bootstrap.php 中重定向 Silex(Symfony2 微框架)
【发布时间】:2014-03-31 08:04:47
【问题描述】:

我想在用户会话到期时创建重定向。我知道该怎么做:

$app->before(function (Request $request) {
    if (!$request->getSession()->get('displayName')) {
        return new RedirectResponse('login', 301);
    }
});

问题是我得到了错误:Fatal error: Class 'RedirectResponse' not found in /Applications/MAMP/htdocs/pst/app/bootstrap.php on line 120

我也尝试在 if 语句中添加这个:

$app->get('/', function () use ($app) {
   return $app->redirect('/hello');
});

但未定义 app 变量。这样做的正确方法是什么?

更新:
我从 Symfony2 添加了 RedirectResponse 函数。但 displayName 不正确。我被会话甩了,有人可以看看它应该是什么吗?
转储:http://pastebin.com/7XQbJJ08

在我的 layout.twig(一般布局)中,我有 <span>  {{ app.user.displayName }}</span>,过了一会儿没有反应,他说他在 null 属性上找不到属性 displayName。

【问题讨论】:

  • 你能展示你完整的bootstrap.php内容吗?
  • 您是否忘记了文件顶部的use Symfony\Component\HttpFoundation\RedirectResponse?...
  • 我不确定 displayName 是什么意思不正确。它不在会话对象的转储中。你确定这已经在会话中设置了吗?
  • 我已经更新了我的开始帖子。

标签: php session symfony redirect silex


【解决方案1】:

对于第一种方法,您需要先确保已导入 RedirectResponse。您可以通过在脚本顶部添加以下内容来做到这一点:

use \Symfony\Component\HttpFoundation\RedirectResponse;

如果这仍然不起作用,那么您可能遇到了自动加载器问题。

对于第二种情况,我不确定如何定义 $app。因为这将在您调用时创建:

$app = new Silex\Application();

【讨论】:

  • 我在主题中添加了一些内容,你能看一下吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多