Как проверить вывод представления данных JSON в CakePHP?
Поэтому я пытаюсь создать мобильное приложение для Android и использую CakePHP в качестве серверной части. Мне не понадобятся никакие представления HTML, я буду отвечать только объектами JSON.
Я взглянул на http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html, и с этим я создал это:
class LocationsController extends AppController
{
public $helpers = array('Html', 'Form');
public $components = array('RequestHandler');
function index()
{
$locations = $this->Location->getNearest();
$this->set(compact('locations'));
$this->set('_serialize', array('locations'));
}
}
и я добавил это к моему routes.php
:
Router::mapResources('locations');
Router::parseExtensions('json');
Когда я запускаю это, ничего не отображается, кроме стиля макета CakePHP по умолчанию. Если я удаляю файл представления index.ctp, я получаю сообщение об ошибке, что он не может найти файл представления. Почему он все еще требует просмотра файла? Я думал с подходом сериализации это не нуждается в представлении. Я попытался посмотреть в консоли разработчика Google Chrome, и нет ответа, содержащего объект JSON. Тем не менее, MySQL работает отлично.
2 ответа
Положил $this->render(false);
между
public $components = array('RequestHandler');
а также
function index()
Теперь он больше не требует файла index.ctp.
Смотрите эту ссылку для получения дополнительной информации.
Я просто сделал то же самое, используя REST API, так как я хочу получить ответ в JSON. Я использовал клиент расширенного отдыха Chrome. В этом я сделал запрос к моему локальному серверу, используя соответствующий метод GET, и это удалось.
лайк: GET /users/view/103.json
вы получите ответ как:
{"users":{"User":{"id":"103","username":"abc","password":"xyz",
"email-id":"abc@xyz.com"}}}