0

我正在开发一个使用 Smarty 作为模板的系统 (ActiveCollab)。我想输出一些 JSON,所以我需要让它自己输出......没有其他东西。但是,如果我没有为相应的操作提供 Smarty 模板文件,我会得到一个破坏 JSON 的错误输出。

有谁知道如何根据具体情况禁用 Smarty 输出?在伪代码中,类似

$this->smarty->disable();

如果做不到这一点,有谁知道如何让 ActiveCollab 不需要模板文件进行输出?或者甚至知道在 ActiveCollab 中输出 JSON 以供消费的更好方法?

我的主要目标是输出 json 供 ActiveCollab 中的 jqgrid 使用,以防万一。

谢谢。


编辑:

事实证明,它就像die();在所需的输出之后添加一样简单。

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

就是这样。为什么我总是在解决方案如此基本时寻找“硬”答案,我永远不会知道......叹息

4

1 回答 1

1

只有当动作本身在结束执行之前没有提供退出时,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 标头并对您发送的值进行编码。

于 2011-12-01T10:11:02.483 回答