CodeIgniter 4.3.1 HMVC模式下登录后重定向控制器失败求助
问题排查与修复方案
1. 修复重定向代码的语法错误
你的Login控制器里redirect()->to("home/dashboard);存在引号未闭合的语法错误,这会导致PHP解析异常,进而生成错误的URL。同时必须加上return才能触发重定向:
return redirect()->to('home/dashboard');
2. 修正路由定义的多余斜杠
Routes.php中$routes->get('/home/dashboard', 'home\Controllers\Dashboard::index');的URI开头带了斜杠,CI4路由定义不需要前缀斜杠,会导致路由匹配失败。改为:
$routes->get('home/dashboard', 'home\Controllers\Dashboard::index');
3. 规范视图路径写法
Dashboard控制器里的视图路径用了反斜杠\App\Modules\home\Views\dashboard,CI4推荐用正斜杠,且可简化路径(框架会自动在Modules目录下查找):
return view('home/Views/dashboard', $data);
4. 统一命名空间大小写
CI4对命名空间大小写敏感,建议控制器命名空间统一使用大写App开头(符合框架规范):
Login控制器命名空间修正:
namespace App\Modules\auth\Controllers;
Dashboard控制器同理:
namespace App\Modules\home\Controllers;
5. 可选:使用路由名称(更可靠)
为路由定义名称,避免URI拼写错误:
// 在Routes.php中给路由命名 $routes->get('home/dashboard', 'home\Controllers\Dashboard::index', ['as' => 'dashboard']);
重定向时直接调用路由名称:
return redirect()->route('dashboard');
这种方式后续修改URI时无需改动重定向代码,更健壮。
内容的提问来源于stack exchange,提问作者Marius
相关产品推荐
相关产品推荐

