CodeIgniter4子文件夹路由报错:控制器或方法无法找到(404)
CodeIgniter4路由404问题解决
问题根源
你的控制器文件目录层级是app/Controllers/Admin/Access/Departments.php,但控制器的命名空间只声明到App\Controllers,未包含Admin\Access层级;同时路由中引用控制器时的命名空间大小写和实际目录不匹配(目录是大写开头的Admin/Access,路由里用了小写admin\Access),导致框架找不到对应的控制器类。
修复步骤
1. 修正控制器的命名空间
修改Departments.php的命名空间,使其与目录结构完全对应:
<?php namespace App\Controllers\Admin\Access; use App\Controllers\BaseController; class Departments extends BaseController { public function index() { echo 'departments'; } }
2. 修正路由配置
两种可选的正确路由配置方式:
方式一:嵌套路由组+命名空间简化
$routes->group('admin', ['namespace' => 'App\Controllers\Admin'], static function($routes) { $routes->group('access', ['namespace' => 'App\Controllers\Admin\Access'], static function($routes) { $routes->group('departments', static function($routes) { $routes->get('/', 'Departments::index'); }); }); });
方式二:直接指定完整命名空间的路由
$routes->get('admin/access/departments', 'App\Controllers\Admin\Access\Departments::index');
关键注意点
- CodeIgniter4对命名空间和目录的大小写严格匹配,目录是
Admin/Access,命名空间和路由中就要用Admin\Access,不能写成小写的admin\access。 - 路由组的
namespace参数可以帮你省略重复的命名空间前缀,减少拼写错误。
内容的提问来源于stack exchange,提问作者Combinu
相关产品推荐
相关产品推荐

