Автор оригинала: 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/”