基于每个操作渲染模板 - Kohana3.2
我目前正在使用 Kohana 的默认模板系统。目前,我扩展了我的一个控制器 Controller_Template_Default
。由此生成的输出对于我在该控制器中的大多数操作来说都是完美的,但是有些操作必须输出 JSON,为此我需要一个空白页面,仅在其上输出 JSON 数据(因此没有模板)。
我尝试使用 $this->response->body($data); 返回没有模板的 JSON 数据,但它不起作用。
你有什么建议?我应该基于每个操作而不是每个控制器来渲染模板吗?我该怎么办?
I'm currently using the default template system of Kohana. Currently, I extend for one of my controllers Controller_Template_Default
. The output generated with this is perfect for most of my actions within this controller, however some actions have to output JSON, for which I need a blank page with solely the JSON data outputted on it (so no template).
I tried to return the JSON data without the template with $this->response->body($data);
but it didn't work.
What is your advice? Should I render templates on a per-action basis instead of per-controller? And how do I go about this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在之前的例程或所有“json”操作中放置以下句子
这->auto_render = false;
当 auto_render 设置为 false 时,Kohana 将不会尝试应用模板
In the before routine or in all "json" actions put the following sentence
this->auto_render = false;
With auto_render set to false, Kohana will not try to apply templates
使用
脚本将在
die();
之后停止执行,并且您将只打印json_encode($data);
Use
The script will stop executing after
die();
and you will have onlyjson_encode($data);
printed您应该使用 json_encode 并为JSON 响应:
此外,我在
after()
方法中渲染模板,每个操作在全局模板中都有自己的内容模板。但为了能够轻松地在 JSON 和 HTML 之间切换,我发现最好使用 Kostache 模块将逻辑与实际模板分开: https://github.com/zombor/KOstache阅读这篇文章,了解如何使用 Kohana 提供不同的格式(JSON、HTML 等):http://techportal.inviqa.com/2010/02 /22/scaling-web-applications-with-hmvc/
You should use json_encode and provide a content-type header for the JSON response:
Furthermore, I render templates in my
after()
method with each action having his own content template within a global template. But to be able to easily switch between JSON and HTML, I find it better to use the Kostache module to separate logic from the actual template: https://github.com/zombor/KOstacheRead this article on how to use Kohana to supply different formats (JSON, HTML etc.): http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/