Laravel RESTful控制器 - 行动前的参数名称

时间:2014-07-13 03:54:19

标签: laravel laravel-4

我有UsersController这是RESTful控制器,其中有一些功能。

UsersController.php内:

function postOutletVisit($id){
   // some code
}

routes.php内:

Route::controller('users', 'UsersController');

通过这条路线我可以像这样访问postOutletVisit行动:

[POST] mydomain.com/users/outlet-visit/{id}

但我想知道是否可以将该链接转换为:

[POST] mydomain.com/users/{id}/outlet-visit

我知道我可以通过为每个动作定义路线来实现这一点:

Route::post('users/{id}/outlet-visit', 'UsersController@outletVisit')

但是这不适合我,因为在UsersConroller中有很多动作,我将放弃方便操作的greate命名(动作名称的第一部分确定其中使用的方法,而不是在{{中单独定义方法) 1}}文件)

3 个答案:

答案 0 :(得分:0)

首先,我认为您的意思是使用Route::resource('users', 'UsersController')

其次,当然可以。只需重载下面的其他路由方法:

// This defines the predefined Laravel routing
Route::resource('users', 'UsersController')

Route::post('users/{id}/outlet-visit', 'UsersController@outletVisit');

答案 1 :(得分:0)

除非您对方法进行扩展,否则无法更改方法Route::controller创建的网址。

答案 2 :(得分:0)

Outlet Visit是一种特定的资源,因此它不属于您的UserController,并且应该有自己的控制器。

class OutletController extends BaseController
{
    public function postStore($userId)           // Controller for storing Outlet Visits
    {
        ...
    }
}

然后为OutletController定义路由,指定需要将其附加到特定用户:

Route::controller('users/{id}/outlet', 'OutletController');

如果需要,您可以为此Controller添加更多操作,例如列表,添加/编辑表单等。