在AppController中为cakephp调用AppModel函数

时间:2014-02-13 21:25:57

标签: php cakephp cakephp-2.0

我有一个我希望所有控制器能够使用的功能,所以我在AppController中定义了它。现在,这个函数将做的部分工作没有业务在控制器中,因此它应该在一个模型中,但由于这是一个通用操作,它在AppModel中似乎是正确的。我的功能如下:

class AppController extends Controller {

    public function i_need_this_everywhere ($term) {
        // do some stuff

        // this is the line that is an issue
        // it seems like this should be simple and work, but no variation of this is working
        $value = $this->App->get_some_cool_data($term);

        return $value;
    }

}

我只是希望能够从AppController调用AppModel函数。我尝试过以下方法:

// I have tried several variations of this.
$this->loadModel('AppModel');
$this->AppModel->get_some_cool_data($term);

但是这会抱怨缺少名为AppModel的数据库表,此时,在AppModel中我试过设置:

public $useTable = FALSE;

但这会让整个应用程序受到影响......现在我的想法已经过时了。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

您的所有模型都应该从AppModel继承,那么为什么不调用$this->AnyModel->get_some_cool_data($term);呢?无论如何,AppModel应该是一个抽象类 - 你几乎不想实例化它,你只是用作基类。

此外,这应该是$useTable = false;而不是$usesTable。请记住,同样,所有模型都应该从AppModel继承,因此所有模型最终都不会使用数据库,这可能是您的错误的来源。

答案 1 :(得分:0)

为了解决这个问题,有效但我不满意的解决方案是将这些函数放在AppModel中,然后从任何模型调用它们:

$this->WhatEverModelIAmIn->the_general_function_I_need($some_argument);