我会以最可重用的方式开发我的CakePHP应用程序。我想将它视为webservices,所以我不想严格绑定控制器与视图。我的想法是:控制器只返回json信息,视图调用控制器并获取json并生成html输出。
我怎么能意识到这一点?可能是一个很好的approch,开发页面而不是视图,并在页面内部调用以前开发的Web服务。
答案 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.json
或www.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