我正在使用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;
?>
答案 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系统就可以为我们完成剩余的工作。