Laravel: Именованные группы роутов

Ромчик
0

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», что не очень удобно. Поэтому, я считаю, в названии группы в конце необходимо ставить один из знаков «.» или «-». Но это вам выбирать.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2020 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика