0

使用 CakePHP 如何在不指定名称的情况下获得对该控制器的引用?

4

2 回答 2

2

为什么要按名称引用控制器?Cake 只加载了一个控制器,你不应该在一个请求中加载其他控制器。1 个请求 == 1 个控制器。

如果要引用没有名称的模型,则默认模型名称在$this->modelClass

$this->{$this->modelClass}->method();

接受的答案(如果它是您想要的模型)是错误的。

class UsersController extends AppController {
    public $uses = array('People');

    public function method() {
        $this->{$this->modelClass}->method(); // works

        $controller = Inflector::singularize($this->name);
        $this->$controller->someMethod(); // fatal error
    }
}
于 2012-12-17T15:29:38.173 回答
1

我想我需要引用这个控制器来创建以下公共函数。但是 dogmatic69 方式要好得多。

// Controller/AppController.php

public function dumpData() {
    if(!Configure::read('debug') > 2)
        throw new Exception(".dumpData() can only be accessed in debug mode.");

    // $controller = Inflector::singularize($this->name);
    // $data = $this->$controller->find('first');
    $this->{$this->modelClass}->find('first');
    die(debug($data));
}
于 2013-01-15T23:50:15.173 回答