Я настроил REST для моего CakePHP, и у меня небольшая проблема. При вызове метода GET, такого как просмотр или индекс на моем контроллере, или даже настраиваемый метод GET, у меня нет проблем с получением ответа. Но когда я пытаюсь выполнить POST-действие, например add, я не получаю никакого вывода из операции, хотя я вижу, что он правильно его выполнил и выполнил (сохранен в БД).CakePHP - POST вызов API REST, возвращающий нуль
Я правильно настроил файл макета для вывода JSON и XML, а также маршрутизацию и представление для каждого типа вывода.
EDIT:
Соответствующий код в beforeFilter
в AppController
:
if ($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
$this->autoRender = false;
} elseif ($this->RequestHandler->isXml()) {
$this->layout = 'default';
$this->RequestHandler->respondAs('xml');
$this->RequestHandler->renderAs($this, 'xml');
} elseif ($this->RequestHandler->ext == 'json') {
$this->layout = 'default';
$this->RequestHandler->respondAs('json');
$this->RequestHandler->renderAs($this, 'json');
} elseif ($this->RequestHandler->accepts('html')) {
$this->layout = 'frontend';
}
кодекса Маршруты:
Router::mapResources('fonykers');
Router::mapResources('voicenotes');
Router::parseExtensions();
Соответствующий код в моем add
метода в FonykersController
:
$response = array('ok' => true, 'title' => 'Thank you for registering', 'msg' => 'A confirmation email has been sent to the provided email address, please click on the link in the email to complete the registration process');
if ($this->RequestHandler->isXml()) {
$this->set(compact('response'));
} else if ($this->RequestHandler->ext == 'json') {
pr('This prints');
$this->set(compact('response')); //View not being outputted
pr('This also prints');
} else {
echo json_encode($response);
}
Мой взгляд в /views/fonykers/json
<?php echo json_encode(array('response' => $response)); ?>
Моего файл макет для JSON:
<?php
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
header('Content-Type: application/json');
header("X-JSON: ".$content_for_layout);
echo $content_for_layout;
?>
Невозможно ничего сказать, не видя соответствующего кода. – JJJ
Обновленный вопрос с соответствующим кодом – 8vius