cakephp从url中删除控制器名称

时间:2013-08-13 16:22:33

标签: cakephp routes cakephp-2.0 cakephp-2.1

我正在开发一个cakephp 2.x ..现在我在我的userscontroller中有一个名为forgetpassword和resetpassword的函数..我正在向用户发送一封电子邮件..

我发送的是这样的网址..这段代码是用forgetpassword函数编写的

 $url = Router::url( array('controller'=>'users','action'=>'resetpassword'), true   ).'/'.$key.'#'.$hash;

我在收件箱中收到此网址

https://www.myweb.com/resetpassword/y2273727372jhgdfjjd2434dff#23232323

当我点击我的收件箱中的网址时...它给了我一个错误..没有去复位密码函数..相反,如果我在函数后面添加控制器名称,那么它成功加载页面

例如

 https://www.myweb.com/users/resetpassword/y2273727372jhgdfjjd2434dff#23232323

但我不想在url

中使用函数后面的控制器名称

routes.php文件

   Router::connect('/resetpassword', array('controller' => 'users', 'action'=>'resetpassword'));

1 个答案:

答案 0 :(得分:1)

Router::connect('/resetpassword', ...)

意味着,你没有使用任何东西作为传递参数等。 但你这样做,所以正确的是:

Router::connect('/resetpassword/*', ...)

另请注意

Router::url( array('controller'=>'users','action'=>'resetpassword'), true   ).'/'.$key.'#'.$hash;

是错误的,应该是 - 如记录所示:

Router::url(
    array(
        'controller' => 'users', 
        'action' => 'resetpassword',
        $key, // passed param
        '#' => $hash // hash
    ), true);