在symfony中将内容类型设置为json

在symfony中将内容类型设置为json,json,symfony1,content-type,Json,Symfony1,Content Type,我正在使用symfony1.4,用spreep作为ORM创建我的项目。当我调用url时,我希望得到JSON格式的响应。我已经将标题设置为“application/json”,但它不起作用,我正在以HTML格式返回响应。我无法解码。如何在symfony中设置内容类型?? 示例代码: 行动- public function executeIndex(sfWebRequest $request) { $data_array=array("name" => "harry", "mob

我正在使用symfony1.4,用spreep作为ORM创建我的项目。当我调用url时,我希望得到JSON格式的响应。我已经将标题设置为“application/json”,但它不起作用,我正在以HTML格式返回响应。我无法解码。如何在symfony中设置内容类型?? 示例代码: 行动-

 public function executeIndex(sfWebRequest $request)
 {
     $data_array=array("name" => "harry", "mobile" => "9876543210");
     $data_json=json_encode($data_array);
     $this->output=$data_json;  
 }
看法-


好吧,我错在哪里了..代码应该是。。 行动-

public function executeIndex(sfWebRequest $request)
{
 $this->getResponse()->setContentType('application/json');
 $data_array=array("name" => "harry", "mobile" => "9876543210");
 $data_json=json_encode($data_array);
 return $this->renderText($data_json); 
}

这段代码对我很有用,如果您有更好的解决方案,请发布。

您也可以在模块的view.yml(apps/{app\u name}/modules/{module\u name}/config/view.yml)文件中定义这段代码

indexSuccess:
  has_layout: false
  http_metas:
    content-type: application/json

在REST样式中,只需将.format添加到URI中,创建相对模板,Symfony路由系统就会为我们完成其余的工作。

哦!作为替代方案,我只想说我一直在使用路由系统,它提供了一种非常简洁的方式来完成它:

->在你的路由中.yml

json_test:
  url: /test
  class: sfRequestRoute
  param: { module: test, action: index, sf_format: json }
然后,框架将自动选择您必须创建的view index.json.php。如上所述,您可以使用json_encode生成操作中的内容,尽管有参数将其放入视图中

现在。。。好的,如果您有兴趣进一步了解这一点,请参阅“实用符号”教程:
下面有些好东西

您不必只设置内容类型,而且框架还必须将数据作为HTML的JSON istead发送出去。。。你在做一些事情,比如在DVD上写“CDROM”,然后把它粘贴到一个只有CDROM的设备上。比如我如何将数据设置为JSON,我从数据库中获取了一个数组,并将其转换为JSON格式,然后通过模板将标题内容类型设置为application/JSON来对其进行回显。如果使用$this->renderText(),则视图模板中不需要任何内容。好的!i、 e无需回显$data_json;是的,render函数将以任何方式呈现并抛出JSON输出。。嘿,谢谢@richsageyeah,太好了,我们可以摆脱$this->getResponse()->setContentType('application/json')。这一直是个问题。。我没有试过,但谢谢你!“我会在未来的项目中做这件事。”哈里什·库尔德表示欢迎。事实上,我是在自己想办法解决这个问题的时候发现这篇文章的。但是我一直在想,Symfony框架中有这么多令人惊叹的东西,必须有一种方法可以从yml文件中设置内容类型。答案是隐藏的,无法描述,所以我决定尝试它,当它起作用时,我感到惊喜!如果你有任何问题,请给我发短信。
json_test:
  url: /test
  class: sfRequestRoute
  param: { module: test, action: index, sf_format: json }