使用CakePHP在不同控制器中使用模型

Jam*_*son 4 php cakephp

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

我是Cake的新手,但不是MVC.从我到目前为止所发现的,Cake将自动使用控制器中的servers模型ServersController,我不知道如何明确地使用某个控制器的模型.

此外,我希望API请求仅在没有任何HTML标记的情况下提供JSON.我有一个默认布局,定义了我所有网站页面的页眉/页脚,当我请求API函数以及视图中的JSON时,它会输出.如何停止输出布局,而只是为视图提供服务?

931*_*.93 14

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

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

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

此外,您似乎没有遵循Cake命名约定,其中控制器名称是复数(ApisServers),模型名称是单数(ApiServer).这些名称也应该在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.

  • 或者你可以使用$ this-> loadModel('Model'); 如果你只需要代码的某些部分,就可以动态加载模型.然后,您可以正常地与模型进行通信(即$ this-> Model-> doSomething();),就像它们是自己的控制器一样. (6认同)