我的Cake应用程序中有一些控制器,即servers
和users
。我想编写一个简单的API,并有一个名为ApiController
的控制器。在此控制器中,我想同时使用servers
和users
模型。
我对Cake很新,但一般不是MVC。从我到目前为止所发现的内容,Cake将自动使用servers
控制器中的ServersController
模型,我不知道如何明确地使用某个控制器中的模型。
此外,我希望API请求仅在没有任何HTML标记的情况下提供JSON。我有一个默认布局,定义了我所有网站页面的页眉/页脚,当我请求API函数以及视图中的JSON时,它会输出。如何停止输出布局,而只是提供视图?
答案 0 :(得分:14)
您需要在控制器中声明$uses
属性,请参阅http://book.cakephp.org/2.0/en/controllers.html#controller-attributes
$uses
属性说明控制器可以使用的模型:
<?php
class ApisController extends AppController{
public $uses = array(
'User',
'Server'
);
}
此外,您似乎没有遵循控制器名称为复数(Apis
或Servers
)且模型名称为单数(Api
或Server
)的Cake命名约定)。这些名称也应该在CamelCase中。有关详细信息,请参阅http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html
关于JSON,您可以使用Ajax布局来帮助您服务JSON请求。有关如何实现此目的的更多信息,请参阅http://book.cakephp.org/2.0/en/views.html#layouts。
答案 1 :(得分:2)
Yottatron的回答是现实,尼克萨维奇也是如此。了解加载模型的不同方法之间的差异非常重要,以下评论简洁地介绍了这些差异:https://stackoverflow.com/a/4753244/117413
就个人而言,我远离重载全局$uses
数组,因为我很少需要在全局级别引用所有模型对象(根据Cake的说法,重载它是一种不好的做法这里的文档:https://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Controllers.html#components-helpers-and-uses)