Laravel 4 - Route :: resource vs Route :: controller.哪个用?

Gra*_*avy 14 php routing laravel laravel-4

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

index
show
create
edit
store
update
destroy
Run Code Online (Sandbox Code Playgroud)

现在假设除了资源操作之外,我还需要执行以下操作:

  • 用户尝试登录.
  • 管理员希望通过电子邮件/名字找到用户
  • 用户通过它的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');
    });
});
Run Code Online (Sandbox Code Playgroud)

或者我应该忘记资源控制器并使用一个宁静的控制器?

Jos*_*ber 32

只需使用资源控制器,将其他方法添加到同一个控制器,并直接向这些方法添加路由:

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');
    });
});
Run Code Online (Sandbox Code Playgroud)

PS我一般回避使用Route::controller().这太模糊了.