Laravel не может найти маршрут, кроме случаев, когда маршрут назван - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь реализовать базовую систему аутентификации, используя только встроенные функции Laravel.Система работает, но только если я назначаю имя маршруту / admin / login [т.е. ...-> name ('admin.login)].Если я возьму его, я получу следующее исключение:

ErrorException (E_ERROR) Route [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 голосов
/ 25 февраля 2019

Если я понимаю ваш вопрос и что вы пытаетесь выполнить ...

В своем блейде входа в систему вы используете:

route('login.'.$url)

Для этого требуется Имя маршрута.Вот что выдает ошибку:

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

Функция route () ищет имя маршрута.

Вместо использования пути маршрута для действия используйте фактический URL:

$url = Request::url();

, поскольку вы пытаетесь перезагрузить одну и ту же страницу.

(есть много способов сделать это. Это только один способ. Но способ, которым вы это делаетенемного странно, ИМХО - хотя это работает.)

...