1

我会以最可重用的方式开发我的 CakePHP 应用程序。我想把它当作网络服务,所以我不想严格绑定控制器和视图。我的想法是:控制器只返回 json 信息,视图调用控制器并获取 json 并进行 html 输出。

我怎么能意识到这一点?可能是一个很好的方法,开发页面而不是视图,并且在页面内部调用之前开发的 web 服务。

4

2 回答 2

2

你甚至可以忘记创建视图文件,使用 $this->set('_serialize', array('people')); 在你的 PeopleController::show()

于 2012-07-31T09:38:50.960 回答
0

好吧,蛋糕有点像这样“开箱即用”的作品。您可以使用它Router::parseExtensions();来定义您想要提供的数据类型。例如在app/Config/routes.php

Router::parseExtensions('xml','json');

这将使检测传入的请求类型成为可能。例如,如果有人请求: www.example.com/people/list.jsonwww.example.com/people/list.xml,在您的 PeopleController 的 list() 方法中,您将能够检测到正在请求的资源类型 - json 或 xml,当然还有您定义的任何其他扩展。这就是RequestHandlerComponent的用途。您可以检查它是否是 xml,例如:

if($this->RequestHandler->isXml()) {
//Some code
}

不同的扩展只是数据的不同表示,所以你提供的究竟是什么并不重要。从 v2.1 开始,Cake 会在看到 JSON 或 XML 请求时自动切换视图类,这会将我们带到新的JSON 和 XML 视图

您所要做的就是在适当的位置提供视图。
View/People(对于此示例)中,您将拥有:

..View/People/
      list.ctp
      xml/
         list.ctp - XML view
      json/
         list.ctp - JSON view
于 2012-07-31T09:11:00.500 回答