Laravel根路由重定向提示未定义异常问题咨询
解决Laravel重定向根路由时Route [/] not defined异常问题
你遇到的InvalidArgumentException: Route [/] not defined问题,核心原因是**redirect()->route()方法的使用错误**——这个方法需要传入路由的名称标识,而不是直接传入URL路径。你的根路由没有定义对应的名称,所以用/作为参数时框架找不到匹配的路由记录。
两种可行的解决方法:
方法1:给根路由添加名称,使用路由名跳转
修改你的路由代码,给根路由加上name()方法指定路由名称:
Auth::routes(); Route::get('/home', 'HomeController@index')->name('name'); Route::get('/', function () { return view('incident-reports.index'); })->middleware('auth')->name('root'); // 新增name('root')定义路由名称
然后在控制器的create方法中,把跳转代码改为使用路由名称:
return redirect()->route('root') ->with('success', 'Successfully added a user account');
方法2:直接使用URL路径跳转
如果你不想额外定义路由名称,也可以直接使用redirect()方法传入URL路径(无需调用route()):
return redirect('/') ->with('success', 'Successfully added a user account');
额外代码优化建议
你当前代码里的$id变量其实是User模型实例,并不是单纯的ID值,把变量名改成$user会让代码可读性更好:
protected function create(array $data) { $user = User::create([ 'firstname' => $data['firstname'], 'middlename' => $data['middlename'], 'lastname' => $data['lastname'], 'email' => $data['email'], 'username' => $data['username'], 'password' => Hash::make($data['password']), ]); DB::table('users_positions')->insert([ [ 'user_id' => $user->id, // 这里用$user->id更直观 'position_desc' => $data['position'], 'primary' => "1", ] ]); // 这里换成上面的跳转代码 return redirect('/') ->with('success', 'Successfully added a user account'); }
这样修改后,用户创建及职位插入成功后就能正常跳转到根路由,同时显示成功提示了。
内容的提问来源于stack exchange,提问作者Raaald
相关产品推荐
相关产品推荐

