[英]Laravel 4 - Route::resource vs Route::controller. Which to use?
我知道資源控制器可以有以下方法
index
show
create
edit
store
update
destroy
現在假設除了資源操作之外,我還需要執行以下操作:
資源控制器對上述功能無用嗎? 如果編程API,我顯然想要索引,顯示,編輯,創建,銷毀......還有登錄,查找,搜索等...
是否可以路由到兩種類型的控制器? 例如
Route::group(['prefix' => 'api'], function() {
Route::group(['prefix' => 'v1'], function() {
// Resource Controller
Route::resource('posts', 'Api\V1\PostsResourceController');
// Restful Controller
Route::controller('posts', 'Api\V1\PostsController');
});
});
或者我應該忘記資源控制器並使用一個寧靜的控制器?
只需使用資源控制器, 將其他方法添加到同一個控制器,並直接向這些方法添加路由 :
Route::group(['prefix' => 'api'], function()
{
Route::group(['prefix' => 'v1', 'namespace' => 'Api\V1'], function()
{
// Add as many routes as you need...
Route::post('login', 'PostsResourceController@login');
Route::get('find', 'PostsResourceController@find');
Route::get('search', 'PostsResourceController@search');
Route::resource('posts', 'PostsResourceController');
});
});
PS我通常回避使用Route::controller()
。 這太模糊了 。
與資源控制器相關的問題之一是當你使用命名路由時,使用組前綴這一切都變成了一大堆。 如果要對前綴進行少量更改,則必須在整個視圖和控制器中進行更改。 即你無法充分發揮命名路線的作用 。
我在開發laravel應用程序時遵循此模型。
Route::group( [ 'prefix' => 'admin' ], function(){
Route::resource('pages', 'PageController', [
'names' => [
'show' => 'page',
'edit' => 'page.edit'
],
'only' => [
'show',
'edit'
]
]);
});
所以我有以下優點。
並且我可以使用語法輕松生成網址,即使我在前綴或資源名稱中進行更改,網址也不會受到影響
URL::route('page', array($id))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.