Calling AppModel function in AppController for cak

2019-04-29 03:53发布

I have a function that I want all of my controllers to be able to use, so I have defined it in AppController. Now part of what this function will do has no business being in a controller and so it should be in a model, but since this is a universal operation, it only seems correct that it be in AppModel. My function looks as followed:

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;
    }

}

I simply want to be able to call an AppModel function from AppController. I have tried the following:

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

But this then complains about the lack of database table called AppModel, at which point, in AppModel I tried setting:

public $useTable = FALSE;

But that blows the whole app up so... Now I am out of ideas. Any help would be greatly appreciated.

2条回答
forever°为你锁心
2楼-- · 2019-04-29 04:38

To solve this for me, the solution that worked but I am unsatisfied with is to place these functions in the AppModel and then call them from any model like so:

$this->WhatEverModelIAmIn->the_general_function_I_need($some_argument);
查看更多
太酷不给撩
3楼-- · 2019-04-29 04:39

All your models should inherit from AppModel, so why not call $this->AnyModel->get_some_cool_data($term); instead? AppModel should be pretty much be an abstract class anyways -- you pretty much never want to instantiate it, you just use as a base class.

Also, that should be $useTable = false; not $usesTable. Remember that, again, all your models should inherit from AppModel, so all your models will end up not using the database as well, which is probably the source of your errors.

查看更多
登录 后发表回答