4

我的 Cake 应用程序中有一些控制器,即serversusers. 我想编写一个简单的 API 并有一个名为ApiController. 在这个控制器中,我想同时使用serversusers模型。

我对 Cake 很陌生,但通常不是 MVC。从我目前所掌握的情况来看,Cake 会自动使用控制器servers中的模型ServersController,我不知道如何显式地使用来自某个控制器的模型。

此外,我希望 API 请求仅提供 JSON 服务,而无需任何 HTML 标记。我有一个默认布局,它定义了我所有网站页面的页眉/页脚,当我从视图中请求 API 函数和 JSON 时,它就会被输出。如何停止输出布局而只提供视图?

4

2 回答 2

14

您需要$uses在控制器中声明该属性,请参见http://book.cakephp.org/2.0/en/controllers.html#controller-attributes

$uses属性说明控制器可以使用哪些模型:

<?php
class ApisController extends AppController{
    public $uses = array(
        'User',
        'Server'
    );
}

此外,您似乎没有遵循 Cake 命名约定,其中控制器名称是复数 ( Apisor Servers) 而模型名称是单数 ( Apior Server)。这些名称也应该使用 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 。

于 2012-07-07T22:02:43.203 回答
2

Yottatron 的答案很准确,Nick Savage 的答案也很准确。了解加载模型的不同方式之间的差异很重要,以下评论简要介绍了这一点: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 )

于 2012-07-08T12:01:52.340 回答