Route::resource
Метод resource класса Route регистрирует набор маршрутов для стандартных CRUD-операций. Первым параметром передаётся URI-префикс, вторым - имя контроллера. Метод автоматически создаёт маршруты для методов index, create, store, show, edit, update и destroy. Можно ограничить набор действий с помощью параметра only или except. Также доступно переопределение имён маршрутов через параметр names.
Синтаксис
<?php
use Illuminate\Support\Facades\Route;
Route::resource($name, $controller, $options = []);
?>
Пример
Зарегистрируем ресурсный контроллер для управления статьями:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArticleController;
Route::resource('articles', ArticleController::class);
?>
Этот код создаст следующие маршруты:
[
"GET|HEAD /articles (articles.index)",
"GET /articles/create (articles.create)",
"POST /articles (articles.store)",
"GET /articles/{article} (articles.show)",
"GET /articles/{article}/edit (articles.edit)",
"PUT|PATCH /articles/{article} (articles.update)",
"DELETE /articles/{article} (articles.destroy)"
]
Пример
Ограничим набор действий только для чтения данных:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArticleController;
Route::resource('articles', ArticleController::class, [
'only' => ['index', 'show']
]);
?>
Результат выполнения кода:
[
"GET|HEAD /articles (articles.index)",
"GET /articles/{article} (articles.show)"
]
Пример
Исключим методы для удаления и обновления:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArticleController;
Route::resource('articles', ArticleController::class, [
'except' => ['destroy', 'update']
]);
?>
Результат выполнения кода:
[
"GET|HEAD /articles (articles.index)",
"GET /articles/create (articles.create)",
"POST /articles (articles.store)",
"GET /articles/{article} (articles.show)",
"GET /articles/{article}/edit (articles.edit)"
]
Пример
Переопределим имена всех маршрутов для контроллера категорий:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CategoryController;
Route::resource('categories', CategoryController::class, [
'names' => [
'index' => 'categories.list',
'create' => 'categories.build',
'store' => 'categories.save',
'show' => 'categories.view',
'edit' => 'categories.modify',
'update' => 'categories.update',
'destroy' => 'categories.remove'
]
]);
?>
Результат выполнения кода:
[
"GET|HEAD /categories (categories.list)",
"GET /categories/create (categories.build)",
"POST /categories (categories.save)",
"GET /categories/{category} (categories.view)",
"GET /categories/{category}/edit (categories.modify)",
"PUT|PATCH /categories/{category} (categories.update)",
"DELETE /categories/{category} (categories.remove)"
]
Смотрите также
-
метод
apiResource,
который регистрирует ресурсные маршруты для API без методов create и edit -
метод
get,
который регистрирует маршрут для GET-запросов -
метод
post,
который регистрирует маршрут для POST-запросов -
метод
group,
который группирует маршруты с общими атрибутами