Я работаю с API, который отображает json-формат в Cakephp. В AppController.php
у меня есть:Как прекратить продолжение в prefilter без продолжения основного контроллера?
public function beforeFilter() {
$this->RequestHandler->renderAs($this, 'json');
if($this->checkValid()) {
$this->displayError();
}
}
public function displayError() {
$this->set([
'result' => "error",
'_serialize' => 'result',
]);
$this->response->send();
$this->_stop();
}
Но это ничего не отображается. Хотя, если он работает нормально без остановки и отображения с:
$this->set([
'result' => "error",
'_serialize' => 'result',
]);
отображается хорошо.
Я где-то читал, что вы нужно отобразить представление перед выходом, чтобы показать ответ, но не уверен. –
beforeFilter не остановит действие контроллера, которое вы запускаете, вы можете попробовать $ this-> autoRender = false; который должен остановить действие вашего контроллера, автоматически отображая представление. – HelloSpeakman
Вижу, спасибо @HelloSpeakman. Есть ли способ перенаправить на другой контроллер без изменения URL-адреса? – ralphjason