Отключить Smarty на одной странице в ActiveCollab - PullRequest
0 голосов
/ 01 декабря 2011

Я работаю в системе (ActiveCollab), которая использует Smarty для шаблонов. Я хочу вывести немного JSON, поэтому мне нужно, чтобы он выводился сам по себе ... никаких других ошибок. Однако, если я НЕ предоставляю файл шаблона Smarty для соответствующего действия, я получаю вывод ошибки, который разрушает JSON.

Кто-нибудь знает, как отключить вывод Smarty в каждом конкретном случае? В псевдокоде что-то вроде

$this->smarty->disable();

В противном случае, кто-нибудь знает, как ActiveCollab не требует файла шаблона для вывода? Или даже знаете, как лучше выводить JSON для использования в ActiveCollab?

Моя главная цель - вывести json для использования jqgrid в ActiveCollab, если это поможет.

Спасибо.


EDIT:

Оказывается, это так же просто, как добавить die(); после желаемого результата.

function bar(){
    echo $myoutput;
    die();
}

Вот и все. Почему я всегда ищу «сложный» ответ, когда решение настолько простое, что я никогда не узнаю ... вздох .

1 Ответ

1 голос
/ 01 декабря 2011

activeCollab будет автоматически отображать макет страницы вокруг содержимого страницы, только если само действие не предоставило выход до его завершения.Это может быть:

  1. Обслуживание некоторых данных с помощью $this->serveData()
  2. Перенаправление страницы
  3. Простая печать содержимого + die ()
  4. Файлвперед, используя download_file() и download_content() функцию
  5. Любое другое существующее, которое останавливает выполнение действия (умирает внутри него)

В вашем случае вы можете использовать контроллер serveData()метод для обслуживания JSON:

function action() {
  $my_json_data = array('something');

  $this->serveData($my_json_data, null, FORMAT_JSON);
}

Эта функция установит правильные заголовки HTTP и закодирует отправляемое вами значение.

...