2011-12-01 72 views
0

我最近从CakePHP 1.2升级到CakePHP 1.3,现在我有一些代码在重定向循环中捕获用户。这是用户成功登录后决定点击链接来管理电子邮件。CakePHP从1.2升级到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... 
} 

这是为了将用户重定向到一个视图()方法,并只显示他们的电子邮件,而不是每个人的电子邮件。当我调试这个时发生了什么,重定向一直在index()方法中结束。

CakePHP中有什么新的东西我缺少?在控制器中使用名称“视图”作为动作是否是否定的?

*编辑*

好吧,我是有点为时过早这一职务。视图($ username)方法中的代码已到达。但是,事实是$ username没有被定义,并且我有一些客户端代码,如果它没有被定义,那么它们会被重定向回index()动作。

我没有检查原来的重定向,并且$ this-> Session-> read('username')填充了用户名,但它只是没有在view()的$ username参数中传递。

谢谢!

+0

是否得到重定向?或跳过它?你的应用程序是否使用ACL?用户是否有权访问“查看”操作? –

+0

Hey Moz,我用更多的信息更新了我的问题。要回答你的问题,它确实得到了重定向,我的应用程序确实使用ACL,并且用户有权访问“视图”操作。 – programmer

+1

由于我不能回答我自己的问题,我会在这里回答它: 原来重定向签名从1.2更改为1.3: http://book.cakephp.org/view/1561/Migrating-from- CakePHP-1-2-to-012 库类>路由器 // CakePHP 1.2路 $ this-> redirect(array('controller'=>'emails','action'=>'view',' id'=> $ this-> Session-> read('username'))); ('controller'=>'emails','action'=>'view',$ this-> Session-> read('username'))); – programmer

回答

0

原来从1.2到1.3改变了重定向签名:

http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3 库类>路由器

// 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')));