Рубрики
Uncategorized

Советы по обмену информацией для оптимизации маршрутизации laravel

Автор оригинала: David Wong.

Статья была переслана из профессионального сообщества разработчиков laravel. Оригинальная ссылка: https://learnku.com/laravel/t

Если вы новичок в laravel, laravel router предоставляет вам отличный и элегантный API. То, что я собираюсь представить ниже, не является каким-либо скрытым или новым знанием. Это всего лишь небольшой навык, который может помочь вам, когда вы изучите laravel.

Документация по маршрутизации очень хорошая, и следующие советы будут дополнены и собраны воедино, что поможет вам быстро научиться использовать маршрутизацию в проекте laravel.

Пользовательское пространство имен

Как говорится в документе, если вы хотите использовать аналогичный App\Http\Контроллеры\Администратор Вы можете использовать API маршрутизации потоков, описанный в laravel 5.4

Route::namespace('Admin')->group(function () {
    //Controllers under the namespace 'app \ http \ controllers \ admin'
});

Это то, что будет использовать каждый проект laravel RouteServiceProvider Технология:

protected function mapWebRoutes()
{
    Route::middleware('web')
         ->namespace($this->namespace)
         ->group(base_path('routes/web.php'));
}

Из-за маршрутов/Из-за маршрутов/ Файл имеет пространство имен, поэтому Администратор

Должно быть в App\Http\Контроллеры\Администратор Чтобы создать контроллер в пространстве имен, вы можете выполнить следующую команду на консоли:

php artisan make:controller -r Admin/UsersController

Как и в предыдущем примере, эта команда маршрутизирует/Как и в предыдущем примере, эта команда маршрутизирует/

Route::namespace('Admin')
    ->prefix('admin')
    ->group(function () {
        Route::resource('users', 'UsersController');
    });

Макрос маршрутизации

Маршрутизаторы могут быть определены макрокомандами, что означает, что если вы хотите предоставить группу маршрутов через пакет или повторно использовать группу определений маршрутов, вы можете определить макрос в поставщике услуг.

Например, если у вас есть пакет торгового центра, содержащий множество торговых маршрутов, и вы хотите разрешить пользователям переписывать или настраивать некоторые маршруты, вы можете сделать это:

//In the service provider's boot () method

public function boot()
{
    Route::macro('shopRoutes', function ($prefix) {
        Route::group([
            'prefix' => $prefix,
            'middleware' => ['shopping'],
        ], function () {
            Route::get('products/{product}', '[email protected]');
            // ...
        });
    });
}

Далее пользователь может использовать routes/web.php Макрос был вызван в файле:

collect(config('languages'))->each(function ($language) {
    Route::shopRoutes($language);
});

Или выберите следующий способ реализации:

Route::macro('shopRoutes', function ($languages) {
    Route::group([
        'prefix' => '/{language}',
        'middleware' => ['shopping'],
        'where' => ['language' => implode('|', $languages)],
    ], function () {
        Route::get('products/{product}', '[email protected]');
        // ...
    });
});

Пример макроса абстрактен, но вы можете понять, что он означает. Я рекомендую использовать макрос маршрутизации только в том случае, если он может помочь вашему проекту. Вы будете знать, когда вам следует это сделать!

Отладка маршрутизации

В приложении laravel, web.php Документы (и api.php Файл) – это файл самостоятельного документа маршрута, на который может реагировать программа, что я очень ценю. Поскольку я уделяю больше внимания аспекту документа этого файла, я предпочитаю определять маршруты по одному, а не использовать маршруты ресурсов.

Если вы обнаружите, что хотите найти маршрут или отладить все возможные маршруты маршрут ремесленника:список Эта команда полезна:

artisan route:list
+--------+----------+----------+------+---------+--------------+
| Domain | Method   | URI      | Name | Action  | Middleware   |
+--------+----------+----------+------+---------+--------------+
|        | GET|HEAD | /        |      | Closure | web          |
|        | GET|HEAD | api/user |      | Closure | api,auth:api |
+--------+----------+----------+------+---------+--------------+

маршрут:список Эта команда полезна для просмотра имен маршрутов и их дополнительного промежуточного программного обеспечения. Это также приводит к моему следующему совету: именованные маршруты.

Именованные Групповые маршруты

Общим соглашением в Laravel является присвоение имен маршрутам, что позволяет легко ссылаться на имя маршрута и избегать жесткого кодирования URI, относящегося к корневому каталогу, в ваших шаблонах. В некоторых приложениях жесткое кодирование URI подходит, в других случаях именованные маршруты позволяют следующее:

{{ route('admin.users.show', ['user' => $user]) }}
{{-- /admin/users/2 --}}

Когда вы определяете группу маршрутов, например, наш пример администратора, вы также можете добавить префикс имени маршрута в группу:

Route::namespace('Admin')
    ->prefix('admin')
    ->name('admin.')
    ->group(function () {
        Route::resource('users', 'UsersController');
    });

Приведенное выше имя с префиксом будет генерировать имена маршрутов, подобные следующим, для пользователей контроллера ресурсов:

  • Приведенное выше имя с префиксом будет генерировать имена маршрутов, подобные следующим, для
  • пользователей
  • контроллера ресурсов:
  • Приведенное выше имя с префиксом будет генерировать имена маршрутов, подобные следующим, для
  • пользователей
  • контроллера ресурсов:
  • Приведенное выше имя с префиксом будет генерировать имена маршрутов, подобные следующим, для

учить больше

Прочитайте всю документацию по маршрутизации и раздел “Контроллеры ресурсов” документации по контроллерам. Я ссылаюсь на раздел контроллеры ресурсов, чтобы попытаться убедиться, что большинство моих маршрутов представляют собой глагол REST и для соглашений об именовании маршрутов.

Оригинал: “https://developpaper.com/sharing-tips-for-laravel-routing-optimization/”