我有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}}文件)
答案 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添加更多操作,例如列表,添加/编辑表单等。