Добрый день.
Только начал изучать фреймворк 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":{}}
Какие изменения нужно внести, чтобы решить эту задачу?