0

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

4

2 回答 2

1

restful 控制器仅在路由中没有异常的情况下才有用。

这些 restful 控制器的限制是构建总是相同的:{ControllerAlias}/{Method}/{Parameter}

您可以通过使用来定义这些Route::controller('users', 'UsersController');

您可以做的是,对异常使用命名路由,但对其他一切使用 restful 控制器。

另一种选择是创建一个“索引”控制器,其中包含 getLogin / postLogin 和 getRegister / postRegister 方法。

路线将类似于:Route::controller('/', 'HomeController');

我个人输入所有可能的路线,我这样做是为了确切地知道我的访问者将能够看到什么,这不仅对安全有好处(白名单始终是安全的良好开端),它还有助于我更好地考虑一个页面应该做什么,应该或者不应该有什么功能。最终提供更好的结构化代码。但这更多是我个人对路由的看法。

于 2013-06-13T10:26:45.930 回答
0

当您想使用函数名称作为 getLogin 和 postLogin 时,您有几个选择。第一个是在您的路线中调用控制器

Route::controller('auth', 'AuthController');//or whatever is the name of your controller

如果要向 REST-full 资源添加其他路由,则需要在资源调用之前指定它们

Route::get('login','AuthController@getLogin');
Route::post('login','AuthController@postLogin');
Route::resource('login', 'AuthController');
于 2016-03-25T10:32:36.723 回答