总是我得到一个空白,我在我的控制器中有这样的动作
/**
* @Route("/check/{key}.json", defaults={"_format"="json"})
* @Template()
*/
public function processAction($upload_key)
{
/* make thing */
return array('data' => $process_data);
}
Run Code Online (Sandbox Code Playgroud)
在我的process.json.twig文件中
{% set res = { 'data': data } %}
{{ res | json_enconde | raw }}
Run Code Online (Sandbox Code Playgroud)
其他形式
{{ { 'data': data } | json_enconde | raw }}
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
{{ 'hello' | json_encode | raw }}
Run Code Online (Sandbox Code Playgroud)
在铬我得到这个回应:
Connection:close
Content-Length:0
Content-Type:application/json
Date:Mon, 19 Dec 2011 05:13:17 GMT
Server:Apache/2.2.20 (Ubuntu)
X-Powered-By:PHP/5.3.6-13ubuntu3.3
Run Code Online (Sandbox Code Playgroud)
从服务器得到任何东西,我无法解决这个问题
有两种方法可以实现这一点,这取决于您喜欢哪种方式以及您的操作是否应该支持多种_format类型.
选项A - 仅返回JSON的操作
您可以完全绕过模板.
在您的控制器中删除@Template注释,而不是return new Response(json_encode($process_data));
选项B - 支持不同格式的操作,或者您只希望在模板中呈现JSON
通过呈现不同格式的操作,我将引用具有路径的操作,如下所示:
@Route("/check/{key}.{_format}", defaults={"_format"="json"}
@Template
Run Code Online (Sandbox Code Playgroud)
虽然这个问题中的控制器沿着"只支持JSON但你想在模板中呈现它的动作"的路线走下去.
假设控制器processAction返回return array('data' => $process_data);问题,然后在调用的模板中将其作为JSON呈现,process.json.twig应按如下方式进行{{ data|json_encode }},不需要预处理data或将其转换为另一个数组或类似模板内的任何数组.
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |