CakePHP和可重用的方法

时间:2012-07-30 11:10:39

标签: cakephp-2.1

我会以最可重用的方式开发我的CakePHP应用程序。我想将它视为webservices,所以我不想严格绑定控制器与视图。我的想法是:控制器只返回json信息,视图调用控制器并获取json并生成html输出。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Well Cake有点像'开箱即用'。您可以使用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 and XML views

您所要做的就是在适当的地方提供意见 在View/People(对于此示例),您将拥有:

..View/People/
      list.ctp
      xml/
         list.ctp - XML view
      json/
         list.ctp - JSON view