Laravel: Именованные группы роутов
Доброго времени суток. В данной статье мы рассмотрим одну из замечательных возможностей Laravel – именование групп роутов. Данная возможность появилась в Laravel 5.2. И так, смотрим…
Как вы знаете в Laravel есть возможность именовать роут, а затем обращаться к роуту по имени. Пример. Создадим роут, для этого в app\Http\routes.php добавим следующий код:
Route::get('/', ['as' => 'home', function () { return view('welcome'); }]);
И добавим в нашу вьюшку welcome.blade.php ссылку, адрес которой будет формироваться по именованному роуту.
<!DOCTYPE html> <html> <head> <title>Laravel</title> <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css"> <style> html, body { height: 100%; } body { margin: 0; padding: 0; width: 100%; display: table; font-weight: 100; font-family: 'Lato'; } .container { text-align: center; display: table-cell; vertical-align: middle; } .content { text-align: center; display: inline-block; } .title { font-size: 96px; } </style> </head> <body> <div class="container"> <div class="content"> <div class="title">Laravel 5</div> <div><a href="{{ route('home') }}"><h1>Test</h1></a></div> </div> </div> </body> </html>
Отлично мы рассмотрели, как использовать именованный роут. Теперь давайте добавим группу. Изменим код в routes.php:
Route::group(['prefix' => 'admin'], function() { Route::get('/', ['as' => 'home', function () { return view('welcome'); }]); });
И раньше роуты, которые находились в группе я называл: «admin.home», «admin.test». Что не очень удобно. Теперь давайте дадим имя группе. Для этого меняем группу в routes.php:
Route::group(['prefix' => 'admin', 'as' => 'admin'], function() { Route::get('/', ['as' => 'home', function () { return view('welcome'); }]); });
И меняем ссылку во вьюшке welcome.blade.php. Т.к. роута с именем home уже не существует.
<!DOCTYPE html> <html> <head> <title>Laravel</title> <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css"> <style> html, body { height: 100%; } body { margin: 0; padding: 0; width: 100%; display: table; font-weight: 100; font-family: 'Lato'; } .container { text-align: center; display: table-cell; vertical-align: middle; } .content { text-align: center; display: inline-block; } .title { font-size: 96px; } </style> </head> <body> <div class="container"> <div class="content"> <div class="title">Laravel 5</div> <div><a href="{{ route('admin.home')}}"><h1>Test</h1></a></div> </div> </div> </body> </html>
Проверяем. Ок, все работает. Теперь я хотел бы обратить внимание на название группы admin. (в конце стоит точка) – это специально я сделал, вы можете поставить дефис, тогда название роута в группе будет «admin-home». Или ничего не ставить, но тогда имя роута будет «adminhome», что не очень удобно. Поэтому, я считаю, в названии группы в конце необходимо ставить один из знаков «.» или «-». Но это вам выбирать.