Как проверить вывод представления данных 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"}}} 
Другие вопросы по тегам