php – Laravel无法找到路线,除非路线被命名

我正在尝试仅使用内置的Laravel功能实现基本身份验证系统.系统可以正常工作,但前提是我为/ admin / login路由指定了名称[即…-> name(‘admin.login)].如果我把它拿出来,我得到的例外情况如下.

ErrorException (E_ERROR) Route [login.admin] not defined. (View:
/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

命令路由: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 |

解决方法:

如果我理解你的问题以及你想要完成的事情……

在您的登录刀片中,您使用:

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();

因为你要做的是重新加载同一页面.

(有很多方法可以做到这一点.这只是一种方式.但是,你这样做的方式有点奇怪,恕我直言 – 虽然它确实有效.)

上一篇:java – Vertx的路由器问题


下一篇:c# – RouteData.Values保持为空