我会覆盖这样的constroller constrcuter:
class XControler extends AppController {
public $attr = null;
public __construct(){
$this->attr = new YController();
}
}
但是当我这样做时,我会犯错误!你能解释我为什么以及如何使用requestAction只是OOP来做到这一点!
感谢
答案 0 :(得分:0)
控制器负责处理最终用户请求。每个控制器操作都应该有一个视图,通常你不想从XController里面的YController访问这些方法。
您希望通过以下方式实现目标:
<强> XController.php 强>
App::uses('YController', 'Controller');
class XController extends AppController {
public $attr;
public $uses = array('Person');
public function __construct($request = null, $response = null) {
$this->attr = new YController();
parent::__construct($request, $response);
}
public function method1() {
// you can now call methods from YController:
$this->attr->Ymethod1();
}
}
<强> YController.php 强>
class YController extends AppController {
public function Ymethod1() {
// ....
}
}
但是,业务逻辑应该在模型或组件中。这是在更多控制器之间共享方法的正确方法。
所以你的XController应该是这样的:
class XController extends AppController {
public $uses = array('Model1');
public function action1() {
$this->Model1->method1();
// ....
}
}