Laravel报错:InvalidArgumentException Route [login]未定义,请求协助
解决Laravel中「Route [login] not defined」错误
嘿,别慌!明天考试前肯定能把这个问题搞定~这个错误的核心原因是:Laravel的认证机制试图跳转到名为login的路由,但你当前的路由配置里并没有定义它,大概率是下面两种场景之一:
场景一:控制器被auth中间件保护了
如果你的HomeController构造函数里配置了auth中间件,那未登录用户访问save_contact方法时,Laravel会自动尝试跳转到登录页面,但你没配置对应的登录路由,就触发了这个报错。
解决步骤:
打开HomeController.php,找到构造函数,把save_contact方法排除在中间件限制之外:
public function __construct() { // 让注册接口不受登录验证限制 $this->middleware('auth')->except('save_contact'); }
要是这个注册接口本来就不需要用户登录,也可以直接删掉整个控制器的auth中间件配置。
场景二:确实需要配置登录路由(注册场景大概率不需要)
如果你的业务逻辑要求用户必须登录才能提交表单,那得在web.php里补充登录相关路由:
// 添加登录页面路由(必须命名为login,满足Laravel认证跳转的规则) Route::get('/login', 'Auth\LoginController@showLoginForm')->name('login'); // 添加登录提交的处理路由 Route::post('/login', 'Auth\LoginController@login');
最后再给个小建议:给你的注册路由加个名称,后续调用更稳妥,比如:
Route::post('/save_contact', 'HomeController@save_contact')->name('save.contact');
之后表单提交地址就可以用{{ route('save.contact') }}来生成,比硬写URL更可靠。
内容的提问来源于stack exchange,提问作者md hasanuzzaman
相关产品推荐
相关产品推荐

