CakePHP中的控制器重定向问题

时间:2011-09-05 19:17:34

标签: cakephp

我有一个名为users_controller的控制器,在我要重定向到我的affiliate_redirect_controller.php的登录操作中,现在我在用户控制器中的以下代码重定向

$this->redirect(array(
      'controller'=>'affiliate_redirect',
      'action'=>'logRedirect' ));

然后我得到以下错误,我似乎无法解决

Error: The requested address '/affiliate_redirect/logRedirect' was not found on this server.

老实说,我不知道这可能是什么,对CakePHP来说还是一个新手,并没有找到适合我的解决方案。

affiliate_redirect_controller.php的内容如下所示

class AffiliateRedirectController extends AppController
{
    var $name = 'AffiliateRedirect';

    function logRedirect(){
     }
}

3 个答案:

答案 0 :(得分:1)

您的数据库中是否有与affiliate redirect controller对应的表?

您可能想重新考虑您的逻辑,并使用CakePHP路由将URL设置为您想要的。拥有名为affiliate_redirect_controller的控制器不遵循CakePHP的命名约定。

由于我不确切知道您要做什么,我不知道这是否适合您,但可能会考虑重定向到像/users/affiliate_redirect/这样的UsersController中的单独操作 或者,您可以创建AffiliatesController,然后重定向到/affiliates/redirect/

此外,如果您没有将调试模式设置为2,则应该这样做。它可能有助于揭示实际问题。

答案 1 :(得分:1)

由于命名约定,我可以看到代码中存在错误。

$this->redirect(array(
      'controller'=>'affiliate_redirects',
      'action'=>'logRedirect' ));

当你用小写字母编写控制器名称时,请看上面的更改,它应该是复数affiliate_redirects,不应该是affiliate_redirect

除此之外,你也可以像这样使用直接重定向。

$this->redirect('affiliate_redirects/logRedirect');

请尝试,它应该有效。

答案 2 :(得分:0)

你在app / config / core.php中有什么调试级别?大多数情况下,当你收到消息时

Error: The requested address '/controller/action' was not found on this server.

这意味着您将调试级别设置为0并将其增加到1或2可以获得有关错误的更多详细信息。