Php 基于每个动作呈现模板-Kohana3.2
我目前使用的是Kohana的默认模板系统。目前,我为我的一个控制器扩展了Php 基于每个动作呈现模板-Kohana3.2,php,templates,kohana,kohana-3,Php,Templates,Kohana,Kohana 3,我目前使用的是Kohana的默认模板系统。目前,我为我的一个控制器扩展了Controller\u Template\u Default。用它生成的输出对于我在这个控制器中的大多数操作都是完美的,但是有些操作必须输出JSON,为此我需要一个空白页面,其中只包含输出的JSON数据(因此没有模板) 我尝试返回JSON数据,但没有使用$this->response->body($data)模板但它不起作用 你有什么建议?我应该基于每个动作而不是每个控制器呈现模板吗?我该怎么做呢?您应该为JSON响应使用
Controller\u Template\u Default
。用它生成的输出对于我在这个控制器中的大多数操作都是完美的,但是有些操作必须输出JSON,为此我需要一个空白页面,其中只包含输出的JSON数据(因此没有模板)
我尝试返回JSON数据,但没有使用$this->response->body($data)模板代码>但它不起作用
你有什么建议?我应该基于每个动作而不是每个控制器呈现模板吗?我该怎么做呢?您应该为JSON响应使用并提供一个内容类型头:
$this->response->headers('Content-Type', 'application/json');
$this->response->body(json_encode($data));
此外,我在after()
方法中呈现模板,每个操作在全局模板中都有自己的内容模板。但为了能够轻松地在JSON和HTML之间切换,我发现最好使用Kostache模块将逻辑与实际模板分离:
阅读这篇关于如何使用Kohana提供不同格式(JSON、HTML等)的文章:在before例程或所有“JSON”操作中,输入以下句子
此->自动渲染=false;
将“自动渲染”设置为false时,Kohana将不会尝试应用模板
echo json_encode($data);
die();
脚本将在die()之后停止执行代码>和您将只有json_encode($data)代码>打印