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