저는 Laravel에서 만든 기본적인 블로그 구조를 가지고 있습니다. 때문에 등 게시물, 설문 조사, 위해, DRY 컨트롤러 공공 및 관리 공유 물건을 유지하는 내가 행한 일을 유지하기 위해, 이제 (나는 그것이 필터 같아요?)경로 그룹의 '전용'경로 필터 사용
/*
The public can access only index and show ::resource routes
- domain.tld/posts
- domain.tld/posts/{id}
- domain.tld/polls
- domain.tld/polls/{id}
- domain.tld/categories
- domain.tld/categories/{id}
- domain.tld/tags
- domain.tld/tags/{id}
*/
Route::resource('posts', 'PortalPostsController', ['only' => ['index', 'show']]);
Route::resource('polls', 'PortalPollsController', ['only' => ['index', 'show']]);
Route::resource('categories', 'PortalCategoriesController', ['only' => ['index', 'show']]);
Route::resource('tags', 'PortalTagsController', ['only' => ['index', 'show']]);
/*
Administration uses the same PortalSomethingController but can access
all routes by prefixing administration/ to the URL:
- domain.tld/administration/posts
- domain.tld/administration/posts/create
... all of other administration/resource('posts') routes
... all administration/resource('polls') routes
... all administration/resource('categories') routes
... all administration/resource('tags') routes
*/
Route::group(['prefix' => 'administration'], function() {
Route::resource('posts', 'PortalPostsController');
Route::resource('polls', 'PortalPollsController');
Route::resource('categories', 'PortalCategoriesController');
Route::resource('tags', 'PortalTagsController');
});
only
필터를 사용하여 라우팅하여 건조한 상태에서 공용 액세스를 제한하기 위해 모든 단일 Route :: 리소스에 [ 'only'=> [ 'index', 'show']를 정의하는 것을 피하고 싶습니다. 그래서, 다음과 같은 것 :
// for public access
Route::group(['only' => ['index', 'show']], function() {
Route::resource('posts', 'PortalPostsController');
Route::resource('polls', 'PortallPollsController');
Route::resource('categories', 'PortallCategoriesController');
Route::resource('tags', 'PortallTagsController');
});
// for admin access
Route::group(['prefix' => 'administration'], function() {
Route::resource('posts', 'PortalPostController');
Route::resource('polls', 'PortallPollsController');
Route::resource('categories', 'PortallCategoriesController');
Route::resource('tags', 'PortallTagsController');
});
가능하면 어떻게할까요? 또한 공개 및 관리 루트 그룹 모두 동일한 리소스 (일부 경로에만 공개)와 동일한 컨트롤러를 사용하므로 DRY를 더 많이 할 수 있습니까? 예 :
// define shared resources
Route::group(['name' => 'sharedResources'], function() {
Route::resource('posts', 'PortalPostController');
Route::resource('polls', 'PortallPollsController');
Route::resource('categories', 'PortallCategoriesController');
Route::resource('tags', 'PortallTagsController');
});
// public access
Route::group(['only' => ['index', 'show']], function() {
// use sharedResources
});
// admin access
Route::group(['prefix' => 'administration'], function() {
// use sharedResources
});
미리 감사드립니다.