【问题标题】:Use a Custom CakeResponse Class in CakePHP 2.1+在 CakePHP 2.1+ 中使用自定义 CakeResponse 类
【发布时间】:2015-02-12 22:07:44
【问题描述】:

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

所以让我们调用我的自定义CakeResponseAppResponse

AppResponseLib/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

The Book 和CakePHP docs 似乎确实建议可以覆盖 CakeResponse 类并使用您自己的自定义类。

正如上面所证明的,它似乎不起作用。

【问题讨论】:

  • 在你这样做之前为什么你认为你需要这样做吗?我很确定还有其他方法。

标签: php cakephp cakephp-2.0


【解决方案1】:

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

解决方案:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多