Laravel找不到路由,除非命名该路由

时间:2019-02-25 19:35:30

标签: php laravel routes laravel-routing laravel-5.7

我正在尝试仅使用内置的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 |

1 个答案:

答案 0 :(得分:4)

如果我了解您的问题以及您要完成的任务...

在登录刀片中,您使用:

route('login.'.$url)

这需要路径名称。那就是引发错误的原因:

ErrorException (E_ERROR)
    Route [login.admin] not defined. (View: /var/www/html/shop/resources/views/auth/login.blade.php)

route()函数查找路由名称。

不要使用Action的路由路径,而是使用实际的URL:

$url = Request::url();

因为您要执行的操作是重新加载同一页面。

(执行此操作的方法有很多。这只是一种方法。但是,您的操作方式有些奇怪,恕我直言-尽管它确实有效。)