【发布时间】:2019-07-19 06:50:59
【问题描述】:
我正在尝试仅使用内置 Laravel 功能来实现基本身份验证系统。系统可以工作,但前提是我为 /admin/login 路由分配了一个名称 [即 ...->name('admin.login)]。如果我把它拿出来,我得到的异常如下。
ErrorException (E_ERROR) 路由 [login.admin] 未定义。 (看法: /var/www/html/shop/resources/views/auth/login.blade.php)
过去,我可以访问未命名的路线,并且可以访问除/login/admin之外的其他未命名的路线。我希望有人能告诉我为什么会出现错误。
路线
Auth::routes();
Route::get('/login/admin', 'Auth\LoginController@showAdminLoginForm')->name('login.admin');
Route::get('/login/staff', 'Auth\LoginController@showStaffLoginForm');
Route::get('/register/admin', 'Auth\RegisterController@showAdminRegisterForm');
Route::get('/register/staff', 'Auth\RegisterController@showStaffRegisterForm');
$url 可以有 2 个值,分别是 admin 或 staff。
登录刀片页面
@isset($url)
<form method="POST" action="{{ route('login.'.$url) }}">
@else
<form method="POST" action="{{ route('login') }}">
@endisset
命令routes:list也显示路由存在,只是未命名。
| | GET|HEAD | login/admin | | App\Http\Controllers\Auth\LoginController@showAdminLoginForm | web,guest,guest:admin,guest:staff |
| | POST | login/admin | | App\Http\Controllers\Auth\LoginController@adminLogin | web,guest,guest:admin,guest:staff |
| | GET|HEAD | login/writer | | App\Http\Controllers\Auth\LoginController@showWriterLoginForm | web,guest,guest:admin,guest:staff |
| | POST | login/writer | | App\Http\Controllers\Auth\LoginController@writerLogin | web,guest,guest:admin,guest:staff |
【问题讨论】:
-
/login/admin是否也存在于您的 Auth::routes() 中?那可能会覆盖您的命名路线。或尝试将您命名的路线放在Auth::routes()上方 -
@aynber 我检查了 auth:routes 生成的路由,没有冲突的路由被覆盖。我认为 G-Man 的答案是正确的,我已将其标记为正确。感谢您的帮助。
-
在您的第一段中,它是
admin.login“但前提是我为 /admin/login 路由 [ie ...->name('admin.login)] 分配了一个名称,”和那么在你的路线中是login.admin->name('login.admin');?怎么回事? -
@aynber 我检查了 auth:routes 生成的路由,没有冲突的路由被覆盖。我认为 G-Man 的答案是正确的,我已将其标记为正确。感谢您的帮助。
-
内置的 laravel 功能已经包含了完整的授权系统。
标签: php laravel routes laravel-routing laravel-5.7