簡體   English   中英

Laravel 4 - Route :: resource vs Route :: controller。 哪個用?

[英]Laravel 4 - Route::resource vs Route::controller. Which to use?

我知道資源控制器可以有以下方法

index
show
create
edit
store
update
destroy

現在假設除了資源操作之外,我還需要執行以下操作:

  • 用戶嘗試登錄。
  • 管理員希望通過電子郵件/名字找到用戶
  • 用戶通過它的slug請求發布帖子

資源控制器對上述功能無用嗎? 如果編程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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM