在symfony中将content-type设置为json

时间:2010-10-26 06:31:25

标签: json symfony1 content-type

我正在使用symfony 1.4,使用propel作为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;  
 }

查看 -

<?php
  header('Content-type: application/json');
  echo $output;
?>

4 个答案:

答案 0 :(得分:20)

好吧,我得到了我出错的地方..代码应该是...... 行动 -

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); 
}

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

答案 1 :(得分:6)

您也可以在模块的view.yml(apps / {app_name} / modules / {module_name} /config/view.yml)文件中定义。

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

答案 2 :(得分:2)

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

- &GT;在您的routing.yml

json_test:
  url: /test
  class: sfRequestRoute
  param: { module: test, action: index, sf_format: json }

然后,框架将自动选择您查看index.json.php,您必须创建它。如上所述,您可以使用json_encode在操作中生成内容,尽管有参数可以将其放在视图中。

现在......好的,如果你有兴趣再多关于这个,请看看“实用symfony”教程:Day 15: Web Services 那里有一些好东西!

答案 3 :(得分:1)

在REST样式中,只需将.format添加到URI,创建相关模板,Symfony Routing系统就可以为我们完成剩余的工作。