我最近从CakePHP 1.2升级到CakePHP 1.3,现在我有一些代码在重定向循环中捕获用户。这是在用户成功登录并决定单击链接以管理电子邮件之后。
我在控制器中有一些代码,其中index()方法将检查当前用户是否是管理员。如果用户不是管理员,则会执行以下操作:
function index()
{
if ($this->Session->read('is_admin') < 1) {
$this->redirect(array('controller' => 'emails', 'action' => 'view', 'id' => $this->Session->read('username')));
}
//...more code...
}
这是为了将用户重定向到view()方法,只显示他们的电子邮件,而不是每个人的电子邮件。调试时发生的事情是重定向始终以index()方法结束。
我缺少CakePHP中的新内容吗?使用名称“view”作为控制器中的动作是否禁止?
*编辑*
好的,我对这篇文章有点不成熟。正在访问视图($ username)方法中的代码。但问题是$ username没有定义,我有一些客户端代码然后重定向回index()动作,如果它没有定义。
我确实检查了原始重定向,并且$ this-&gt;会话 - &gt;读取('用户名')填充了用户名,但它没有在view()的$ username参数中传递。 / p>
谢谢!
答案 0 :(得分:0)
事实证明重定向签名从1.2更改为1.3:
http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3 图书馆课程&gt;路由器
// CakePHP 1.2 way
$this->redirect(array('controller' => 'emails', 'action' => 'view', 'id' => $this->Session->read('username')));
// CakePHP 1.3 way
$this->redirect(array('controller' => 'emails', 'action' => 'view', $this->Session->read('username')));