CodeIgniter 4路由优先级问题:create_datapegawai跳转异常求助
问题原因及解决方案
原因
CodeIgniter的路由是从上到下依次匹配的。当你把/admin/(:segment)放在/admin/create_datapegawai前面时,访问/admin/create_datapegawai会被第一个路由捕获——create_datapegawai会被当作(:segment)的占位符参数,系统会调用Admin::detail_pegawai('create_datapegawai'),而非你期望的create_pegawai方法。
解决方法
有两种实用的处理方式:
调整路由顺序(最简单直接)
把精确匹配的路由放在动态路由前面,也就是保持你测试过的正确写法:$routes->get('/admin/create_datapegawai', 'Admin::create_pegawai'); $routes->get('/admin/(:segment)', 'Admin::detail_pegawai/$1');这样系统会先匹配到精确的
create_datapegawai路由,不会再触发后面的动态路由。给动态路由添加正则约束
如果不想调整顺序,可以通过正则限制(:segment)的匹配范围。比如如果员工ID是纯数字,就把路由改成:$routes->get('/admin/([0-9]+)', 'Admin::detail_pegawai/$1'); $routes->get('/admin/create_datapegawai', 'Admin::create_pegawai');这样只有数字格式的
/admin/xxx才会匹配到detail_pegawai路由,create_datapegawai就能正常匹配到对应方法。
内容的提问来源于stack exchange,提问作者misty
相关产品推荐
相关产品推荐

