我决定将我的用户逻辑拆分为一个控制器来清理我的路由文件,沿着RESTful路由我有类似的东西:
UsersController {
getLogin() {
}
postLogin() {
}
}
只有现在我坚持使用/ users / login和/ users / register等。
我需要将它们更改为/ login和/ register,我已经研究过但没有找到确定的答案,我尝试了命名的路由方法:
Route::get('users/login', array('as' => 'login', 'uses' => 'UsersController@getLogin'));
但它没有找到,经过一些T& E我发现了一条工作路线:
Route::get('login', 'UsersController@getLogin');
只是现在我明确地定义了每个方法..当我定义动词两次时,这会破坏RESTful的对象吗?
如果Laravel可以找出所要求的方法然后我可以执行以下操作并且完成以下操作,那将是非常棒的:
Route::any('login', 'UsersController@Login');
据我所知,这是无法做到的......所以在这种情况下尝试RESTful是否毫无意义,应该只为我的所有方法使用命名路由?
答案 0 :(得分:1)
其余控制器仅对路由中没有例外的情况有用。
这些安静控制器的限制是构建总是相同的: {ControllerAlias} / {方法} / {参数}
您可以使用Route::controller('users', 'UsersController');
你可以做的是,使用命名路由作为例外,但使用restful控制器来做其他事情。
另一种选择是创建一个“索引”控制器,它包含getLogin / postLogin和getRegister / postRegister方法。
路线类似于:Route::controller('/', 'HomeController');
就个人而言,我输入所有可能的路线,我这样做,所以我确切地知道我的访客将能够看到什么,这不仅是安全的好事(白名单始终是安全的良好开端),它也帮助我更好地思考页面应该做什么,以及应该或不应该具有的功能。 最终提供更好的结构化代码。但这更多是我对路由的个人看法。
答案 1 :(得分:0)
如果要将函数名称用作getLogin和postLogin,则可以使用几个选项。 第一个是在路线中呼叫控制器
Route::controller('auth', 'AuthController');//or whatever is the name of your controller
如果您想要向REST完整资源添加其他路由,您需要指定它们 BEFORE 资源调用
Route::get('login','AuthController@getLogin');
Route::post('login','AuthController@postLogin');
Route::resource('login', 'AuthController');