Laravel改变了RESTful控制器的路由

时间:2013-06-13 09:37:45

标签: rest routes laravel

我决定将我的用户逻辑拆分为一个控制器来清理我的路由文件,沿着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是否毫无意义,应该只为我的所有方法使用命名路由?

2 个答案:

答案 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');