CodeIgniter 4 Routing -占位符中不接受$符号



我在codegniter 4中有以下路由

$routes->add('/sample/(:any)/(:any)', 'Site/CountryController::addEdit/$1/$2');

http://localhost/sample/1/1给我404错误。但是,如果我像下面这样删除$符号,它会工作得很好

$routes->add('/sample/(:any)/(:any)', 'Site/CountryController::addEdit/1/2');

它不需要美元符号,因为你实际上总是将整数12传递到Controller方法中,不管占位符的正则表达式是什么。

我认为你的问题是http://localhost/sample/1/1不匹配路由/sample/(:any)/(:any),它匹配/sample/(:any)(:any)占位符实际上可以覆盖任何东西,甚至多个片段。

因此,将路由定义为.../(:any)/(:any)在语义上是毫无意义的,因为第一个(:any)将捕获所有内容,使第二个(:any)占位符完全无用。正如您现在所定义的那样,sample/之外的整个URI将通过第一个占位符传递到$1。你永远不会有一个值来填充$2

在我看来,你真的想把这个占位符限制在(:segment),而不是(:any)

相关内容

  • 没有找到相关文章

最新更新