【问题标题】:Cake routing table apparently supplemented蛋糕路由表明显补充
【发布时间】:2019-05-14 11:23:05
【问题描述】:

我继承了在 Cake 框架上构建的代码体,但很难理解它的路由。我知道 Cake 体现了各种约定,这意味着做出了一些神奇的假设,也许这就是我的困难。我不是蛋糕专家。

我想要实现的是/ 路由以及其他各种路由的处理程序。所以路由代码看起来像这样(为简洁起见省略了cmets):

    error_log('Route(((');
    Router::connect('/',array('controller' => 'users', 'action' => 'showoffpage'));
    Router::connect('/logout', array('controller' => 'users', 'action' => 'logout'));
    Router::connect('/admin', array('controller' => 'users', 'action' => 'login', 'admin' => true));
    Router::connect('/:slug',array('controller' => 'users', 'action' => 'profile'), array('pass' => array('slug')));
    CakePlugin::routes();
    error_log(')))Route -- ' . json_encode(Router::$routes));

当遇到这种情况时,输出如下:

[Tue May 14 19:11:19 2019] Route(((
[Tue May 14 19:11:19 2019] )))Route -- [{"keys":[],"options":[],"defaults":{"controller":"users","action":"showoffpage","plugin":null},"template":"\/"},{"keys":[],"options":[],"defaults":{"controller":"users","action":"logout","plugin":null},"template":"\/logout"},{"keys":[],"options":[],"defaults":{"controller":"users","action":"login","admin":true,"prefix":"admin","plugin":null},"template":"\/admin"},{"keys":[],"options":{"pass":["slug"]},"defaults":{"controller":"users","action":"profile","plugin":null},"template":"\/:slug"}]
[Tue May 14 19:11:19 2019] 106.70.102.45:51080 [302]: /
[Tue May 14 19:11:19 2019] Route(((
[Tue May 14 19:11:19 2019] )))Route -- [{"keys":[],"options":[],"defaults":{"controller":"users","action":"showoffpage","plugin":null},"template":"\/"},{"keys":[],"options":[],"defaults":{"controller":"users","action":"logout","plugin":null},"template":"\/logout"},{"keys":[],"options":[],"defaults":{"controller":"users","action":"login","admin":true,"prefix":"admin","plugin":null},"template":"\/admin"},{"keys":[],"options":{"pass":["slug"]},"defaults":{"controller":"users","action":"profile","plugin":null},"template":"\/:slug"}]
[Tue May 14 19:11:19 2019] PROFILE:pages
[Tue May 14 19:11:19 2019] 106.70.102.45:51082 [200]: /pages

即,空路由立即被“重写”为/pages,即使路由表仅包含此处代码中设置的四个条目。然后将命中发送到UsersController::profile('pages')(因此诊断PROFILE:pages 输出)而不是UsersController::showoffpage()UsersController::showoffpage() 中有调试,但从不输出。显然,我在源代码中搜索了 pages 这个词的出现,但有 100 个。 Cake 可能会做些什么来让它重写路线,我该如何阻止它?

【问题讨论】:

  • 请发布您的用户控制器。也许showoffpagemethod 包含重定向到/pages 或用户或应用控制器中的 beforeFilter 方法。

标签: php cakephp routing


【解决方案1】:

感谢 Salines 的评论,因为它促使我​​寻找正确的地方。方法 AppController::_checkAuth() 正在执行重定向,因为我的新路由不在白名单中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多