在CakePHP 2.1+中使用自定义CakeResponse类

时间:2015-02-12 22:07:45

标签: php cakephp cakephp-2.0

我正在尝试使用自定义CakeResponse课程,但是我目前的工作和当前搜索都没有让我找到实际使用的解决方案。

因此,让我们调用我的自定义CakeResponse课程AppResponse

AppResponse位于Lib/Network

<?php
App::uses('CakeResponse', 'Network');

class AppResponse extends CakeResponse {
}

基于此博文http://mark-story.com/posts/view/cakeresponse-in-cakephp-2-0,似乎应该能够使用此代码覆盖CakeResponse并使用自定义Response类

App::import('Lib', 'CustomResponse');

class AppController extends Controller {
    protected $_responseClass = 'CustomResponse';
}

以下App::uses/import语句集合不起作用

App::uses('AppResponse', 'Network');
App::uses('AppResponse', 'Lib/Network');
App::uses('AppResponse', 'Lib');
App::import('Lib', 'AppResponse');

class AppController extends Controller {

    protected $_responseClass = 'AppResponse';
}

public function beforeRender() {
    debug($this->_responseClass);
    debug(get_class($this->response));
    die();
}

这将输出:

AppResponse CakeResponse

本书和CakePHP docs似乎表明可以覆盖CakeResponse类并使用您自己的自定义类。

如上所述,它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

解决此问题的方法是编辑webroot/index.php文件并更改用于新自定义CakeResponse类的响应类。

解决方案:

App::uses('AppResponse', 'Lib/Network');

$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
    new CakeRequest(),
    new AppResponse()
);

注意:此解决方案is a tweet from Mark Story