【发布时间】:2011-04-04 04:05:26
【问题描述】:
我有一个自定义路由类,它检查对象的版本控制以允许创建不会出现在实时站点上的页面草稿版本。当管理员单击预览页面的草稿版本时,我在前端的 PublishingHelper 类(从路由类调用)检查用户的权限,以查看是否允许他们查看此页面的草稿版本。
我正在使用此代码:
$context = sfContext::getInstance();
$user = $context->getUser();
但 $user 为 NULL。
有人有什么想法吗?我所有的搜索似乎都说这是获取用户对象的正确方法。
谢谢,
汤姆
【问题讨论】:
-
可能 sfContext 尚未初始化。你可以看看 initialize() 和 loadFactories() (或类似的)。
-
sfContext 已初始化(我使用 $context->hasInstance() 检查)。我尝试了 "if ($user === null) $context->loadFactories()" 但这将其发送到递归循环中,因此它必须是启动路由过程的 loadFactories。
-
我找到了包含工厂的生成缓存文件 - “config_factories.yml.php”。如果我编辑此文件并将 factory['user'] 位放在 factory['routing'] 位之上,则初始化用户对象! ...现在的问题是它没有任何 id 或详细信息...
-
@Jon - 是的,我是。但是,我得到的用户对象(来自之前的评论)在 $user->getGuardUser() 上返回 null
-
您的工厂修复后,您是否尝试过以下操作... sfContext::getInstance()->getUser()->getGuardUser()->getId()
标签: php routing symfony1 publishing