在ActiveCollab中的单个页面上禁用Smarty

时间:2011-11-30 22:59:49

标签: php jqgrid smarty activecollab

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

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

$this->smarty->disable();

如果失败了,是否有人知道如何让ActiveCollab不需要输出模板文件?或者甚至知道在ActiveCollab中输出JSON以供消费的更好方法吗?

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

感谢。


编辑:

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

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

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

1 个答案:

答案 0 :(得分:1)

只有当操作本身在结束执行之前没有提供退出时,

activeCollab才会自动呈现页面内容的页面布局。此退出可能是:

  1. 使用$this->serveData()
  2. 投放一些数据
  3. 页面重定向
  4. 简单打印内容+ die()
  5. 使用download_file()download_content()功能
  6. 向前转发文件
  7. 任何其他存在停止执行操作的行为(在其中死亡)
  8. 在您的情况下,您可以使用控制器的serveData()方法来提供JSON:

    function action() {
      $my_json_data = array('something');
    
      $this->serveData($my_json_data, null, FORMAT_JSON);
    }
    

    此函数将设置正确的HTTP标头并对您要发送的值进行编码。