Задать вопрос

Как в laravel изменить путь на авторизацию и при этом передать параметр?

Добрый день.

Только начал изучать фреймворк Laravel и столкнулся с задачей, ответ на которую пока нигде не нашёл. Самостоятельно не смог решить. Прошу помочь разобраться.

Версия
Laravel Framework 6.10.1

Задача
Изменить путь на страницы авторизации и добавить в адрес параметр.

Описание
После выполнения команд
  • composer require laravel/ui
  • php artisan ui vue
  • php artisan ui:auth

... получаем шаблоны, которые расположены в resources/views/auth и в resources/views/layouts.

Теперь, чтобы попасть на страницу входа в адресной строке вводим адрес

localhost:8000/login

Это адрес по умолчанию. Как его изменить таким образом, чтобы обеспечить мультиязычность сайта?

Адрес должен быть такого вида:

localhost:8000/ru/login
localhost:8000/en/login
... и т. д.

В файле routes\web.php после выполнения команд выше, изначально прописано:

Auth::routes();

Для переопределения маршрутов нашёл в интернете вариант, как в листинге ниже. Если сейчас изменить адрес для входа в систему, то получится перейти на страницу.

// Login
Route::group(['middleware' => ['web']], function() {
    Route::get('/en/login', ['as' => 'login', 'uses' => 'Auth\LoginController@showLoginForm']);
    Route::post('/en/login', ['as' => 'login.post', 'uses' => 'Auth\LoginController@login']);
    Route::post('/en/logout', ['as' => 'logout', 'uses' => 'Auth\LoginController@logout']);
});
// Registration Routes...
    Route::get('register', ['as' => 'register', 'uses' => 'Auth\RegisterController@showRegistrationForm']);
    Route::post('register', ['as' => 'register.post', 'uses' => 'Auth\RegisterController@register']);

// Password Reset Routes...
    Route::get('password/reset', ['as' => 'password.reset', 'uses' => 'Auth\ForgotPasswordController@showLinkRequestForm']);
    Route::post('password/email', ['as' => 'password.email', 'uses' => 'Auth\ForgotPasswordController@sendResetLinkEmail']);
    Route::get('password/reset/{token}', ['as' => 'password.reset.token', 'uses' => 'Auth\ResetPasswordController@showResetForm']);
    Route::post('password/reset', ['as' => 'password.reset.post', 'uses' => 'Auth\ResetPasswordController@reset']);


Но, так как нужно передавать разные значения, то первая часть адреса должна передавать параметром:

'/{lang}/login'

Но при таком варианте получаю ошибку:

[15:19:24] LOG.error: Missing required parameters for [Route: login] [URI: {url_lang}/login]. (View: C:\xampp\htdocs\laravel\poligon.local\resources\views\layouts\app.blade.php) {"exception":{}}


Какие изменения нужно внести, чтобы решить эту задачу?
  • Вопрос задан
  • 987 просмотров
Подписаться 3 Простой 2 комментария
Решения вопроса 1
tol64
@tol64 Автор вопроса
Для описанной задачи меня полностью устроило решение показанное в этом видео: https://youtu.be/_BsHyHc9NqE

Кроме этого нужно внести ещё некоторые изменения. Подробнее можете посмотреть вот в этой теме:
Как избавиться от ошибки Missing required paramete...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Kulaxyz
@Kulaxyz
Могу лучше
Зайди в app.blade.php и там найди строчку со ссылкой на страницу логина, там скорее всего где-то просто записано {{route('login')}}
Туда нужно дописать нужный параметр
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы