Рендеринг шаблона для каждого действия - Kohana3.2 - PullRequest
0 голосов
/ 31 августа 2011

В настоящее время я использую стандартную систему шаблонов Kohana. В настоящее время я расширяю для одного из моих контроллеров Controller_Template_Default. Вывод, сгенерированный с помощью этого, идеально подходит для большинства моих действий в этом контроллере, однако некоторые действия должны выводить JSON, для которого мне нужна пустая страница с исключительно данными JSON, выводимыми на него (поэтому нет шаблона).

Я пытался вернуть данные JSON без шаблона с $this->response->body($data);, но это не сработало.

Какой ваш совет? Должен ли я отображать шаблоны для каждого действия вместо контроллера? И как мне это сделать?

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

В процедуре before или во всех действиях "json" вставьте следующее предложение this-> auto_render = false;Если для auto_render установлено значение false, Kohana не будет пытаться применять шаблоны

0 голосов
/ 03 сентября 2011

Используйте

echo json_encode($data);
die();

Скрипт перестанет выполняться после die();, и у вас будет напечатано json_encode($data);

0 голосов
/ 31 августа 2011

Вы должны использовать json_encode и предоставить заголовок типа содержимого для ответа JSON:

$this->response->headers('Content-Type', 'application/json');
$this->response->body(json_encode($data));

Кроме того, я отображаю шаблоны в своем методе after(), причем каждое действие имеет собственный шаблон содержимого в глобальном шаблоне. Но чтобы иметь возможность легко переключаться между JSON и HTML, я считаю, что лучше использовать модуль Kostache для отделения логики от фактического шаблона: https://github.com/zombor/KOstache

Прочтите эту статью о том, как использовать Kohana для предоставления различных форматов (JSON, HTML и т. Д.): http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

...