Laravel 拉维4中命名的restful路线

Laravel 拉维4中命名的restful路线,laravel,laravel-4,restful-architecture,laravel-routing,Laravel,Laravel 4,Restful Architecture,Laravel Routing,因此,我已经能够让restful控制器与 Route::controller('users','UserController'); class UserController extends BaseController { public function getAccount(){} } 因此,/users/account起作用。但是如果我试着做类似的事情 Route::any('account',array('as' => 'account','uses' => 'Us

因此,我已经能够让restful控制器与

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

class UserController extends BaseController {
    public function getAccount(){}
}
因此,
/users/account
起作用。但是如果我试着做类似的事情

Route::any('account',array('as' => 'account','uses' => 'UserController@account'));

然后转到
/account
,它不工作(
NotFoundHTTPException
)。有没有一种方法可以将命名路由和restful控制器结合使用?我喜欢restful系统如何分解请求,以及命名路由如何封装URI并将其与函数名分离。这在拉威尔3号成功了。我是在语法上遗漏了什么,还是Laravel4故意不允许这种混搭行为?谢谢……

这完全取决于您定义路线的顺序。如果不起作用,请尝试颠倒定义的顺序

但是因为Laravel的目的是让您的生活更轻松,所以您可以将一组方法名及其对应的路由名作为第三个参数传递给
route::controller

Route::controller('users', 'UsersController', ['getProfile' => 'user.profile']);
这可能不直接适用于您的情况,但它非常方便。

尝试以下方法:

Route::get('/',array('as'=>'named_route','uses'=>'yourRestfulController@getMethod'));
这对我很有用。诀窍是在@part之后添加动作类型。您应该使用与L3不同的方法的全名

这对我很有用。诀窍是在@part之后添加动作类型。您应该使用与L3不同的方法的全名

因为REST前缀get、post等是区分其实现的REST类型的模式。当您命名restful控制器路由时,它们的行为不再像restful控制器,而是您希望命名的普通控制器。例如:

Route::get('user/profile/', array('as'=>'dashboard', 'uses'=>'ProfileController@showDashboard'));
考虑一下这一点: 假设我们希望SystemController是RESTful控制器,那么您将定义:

Route::controller('/', 'SystemController'); 
然后,您希望将SystemController上的postDashboard命名为dashboard,因此将路由修改为:

Route::get('user/profile/', array('as'=>'dashboard','uses'=>'SystemController@postDashboard'));
Route::controller('/', 'SystemController');
在这种情况下,postDashboard不应该通过
GET
协议访问,因为我们声明它是
POST
,也就是说,如果Laravel将它视为RESTful控制器,因为我们这样命名它,它将被视为normal not RESTful,所以我们可以访问它tru
GET
协议。以这种方式命名是非常不合适的,因为我们打破了我们首先想要的东西,即告诉Laravel将SystemController视为RESTful


我认为你必须把詹森·刘易斯的职位当作适当的答案。没有怨言@arda,因为你也是对的。

第三个参数中的数组正是我需要的。这也大大简化了路由代码。故事的寓意是,始终检查Laravel代码中的函数定义是否有未记录的额外参数…完美,感谢您公开了此未记录的功能,我已命名了控制器的名称空间,这样就从我的视图中删除了一堆不必要的详细信息,这正是我所寻找的。然而,我希望我能在Controller@__construct()方法。。。我猜你可以;)*前往L4文档进行轻度阅读。