CakePHP响应停止已弃用

时间:2017-11-24 05:55:04

标签: php cakephp

我使用CakePHP 3.5并且我想要使用的两种方法已被弃用,我无法找到替代方案。

方法是:

$this->response->send();
$this->response->stop();

我想重定向到另一个页面并停止执行当前方法。我在重定向后尝试拨打die()并且无法正常工作。

根据migration guide,方法已经过时了。

有什么想法吗?

编辑:

我尝试重定向用户而无法访问某些页面。这是控制器中的initialize()方法。

if ($allowedAccess) {
    $this->Flash->error("Insufficient rights to access that location");
    $this->redirect($this->referer());
    // FIXME - find alternative to deprecated methods
    return $this->response;
    $this->response->send();
    $this->response->stop();
}

1 个答案:

答案 0 :(得分:2)

你在控制器中尝试这个吗?只需从您的控制器方法返回响应对象:

public function index() {
    // Some code
    return $this->response;
}

send()只是围绕phps exit()的包装。如果你需要,可以使用exit()。

返回响应时会发生什么?ActionDispatcher处理返回值以及它是否为Response对象。请参阅__invoke()方法。

响应将通过the middleware layer,最终将由ResponseEmitter使用的Server发送。检查你的webroot / index.php看看它:

// Bind your application to the server.
$server = new Server(new Application(dirname(__DIR__) . '/config'));
// Run the request/response through the application
// and emit the response.
$server->emit($server->run());