【发布时间】:2016-04-07 15:28:45
【问题描述】:
我目前正在将一个 v2 站点迁移到 v3 中,遇到了一个我无法自行修复的路由问题,所以这里可能有人遇到了同样的问题。 所以我有这条路线:
http://example.com/installer-review/postcodes/...
路由规则是:
$routes->connect('/installer-review/postcodes/*',
['controller' => 'InstallerReviews', 'action' => 'postcodes'],
);
当我转到 URL 时,它会正确重定向到 InstallerReviews 的操作“邮政编码”,但无论何时我尝试这样做: Router::url(['controller' => 'installer-review', 'action' => 'postcodes']); 要生成指向它生成的 InstallerReviews 操作的链接: http://example.com/installer_review/postcodes
这在 V2 中没有发生,现在 V3 正在发生。
我在路由文件上使用了不同的 classRoutes 但没有任何效果,我一直在使用 InflectedRoute 来增加与以前版本的兼容性,但是在使用 InflectedRoute 调试路由生成时,它有时会将所有“-”转换为“_ " 这打破了我原来的路线规则。
因此,由于这个问题,我尝试创建自定义路由规则,并按照 [http://book.cakephp.org/3.0/en/development/routing.html#custom-route-classes][1] 上的信息进行操作,但如果我这样做,这又是一个令人头疼的问题:
$routes->connect('/installer-review/postcodes/*',
['controller' => 'InstallerReviews', 'action' => 'postcodes'],
['routeClass' => 'MyRoute']
);
它开始抛出关于已声明类 MyRoute 的错误。
我现在的解决方案是实现我自己的 Url::build 函数,它会覆盖原来的辅助函数,但这对我来说感觉太“hackish”了,所以希望有一个更干净的解决方案。
对大墙感到抱歉,但不想遗漏任何东西,感谢您的帮助
【问题讨论】:
标签: php cakephp routing cakephp-3.0