RESTful控制器如何在Laravel 4中工作,如何正确使用它们?

时间:2014-03-19 09:38:43

标签: php laravel laravel-4

我是MVC的新手(这是我第一次在真实场景中使用它)而且我对控制器(应该)如何工作有点困惑。

阅读完Laravel文档后,我得出的结论是,对于一般任务,例如处理加载站点(不同站点连接在一起),页面,管理员等,我需要RESTful控制器。

对于简单的任务,它有效。使用简单而有趣。我有这样的路线:

Route::controller('admin', 'AdminController'); 

我有像

这样的功能
public function getProduct($id) 

它有效。 (它用于获取特定产品:../admin/product/1

现在我想要更复杂的东西。喜欢

../sites/loadsite/mysite/mypage/mysubpage/123?myoption=yes

我该怎么做?我该如何开始,如何解决问题?我是否必须为每一件事使用Route::get(),或者是否有更好的"这样做的方式?

2 个答案:

答案 0 :(得分:2)

Laravel提供“资源控制器”帮助程序,用于为相应的控制器方法生成RESTful路由:

http://laravel.com/docs/controllers#resource-controllers

您可以使用它轻松创建给定模型的标准REST路由,或者,如laravel.com提供的示例所示,您可以仅限制为某些路由。它们提供的表演示了给定路径如何映射到给定的操作/控制器方法。

关于你给出的示例网址:../sites/loadsite/mysite/mypage/mysubpage/123?myoption=yes,我会将问题分成两部分,即网址和查询字符串:

关于网址/sites/loadsite/mysite/mypage/mysubpage/123。许多人认为这不是一个“RESTful”路线。而不是页面和子页面,你应该考虑模型,有时是子模型。通常认为避免深层嵌套路线是最佳做法,这通常意味着不只是单层深度:/model/{id}/submodel/[id]

关于url末尾的查询字符串:?myoption=yes:Laravel使用Input::get("Param")函数提供对查询字符串参数的访问。您不必在路由中指定查询字符串参数,只需在控制器方法中访问它们即可。

答案 1 :(得分:2)

"更好"方式是resource controllers - 当然可以与路线prefixingfilters(例如authentication filters)等结合使用。

在资源控制器的方法中,您可以检索其他input(示例的查询字符串中的选项),并使用validation和您想要的任何内容进行处理。