我有一个我希望所有控制器能够使用的功能,所以我在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;
但这会让整个应用程序受到影响......现在我的想法已经过时了。任何帮助将不胜感激。
答案 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);