我使用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();
}
答案 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());