开发者

set content-type to json in symfony

I am using symfony 1.4, to create my project with propel as ORM. i want to get the response in JSON format, when i call a url. I have set the headers to "application/json" but it is not working, i am getting the response back in HTML format..which i am not able to decode. How can we set content-type in symfony?? example code: Action-

 public function executeIndex(sfWebRequest $request)
 {
     $d开发者_JAVA百科ata_array=array("name" => "harry", "mobile" => "9876543210");
     $data_json=json_encode($data_array);
     $this->output=$data_json;  
 }

View-

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


ok i got where i was going wrong..yhe code should have been.. Action-

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

this code has worked for me, please post if any better solution you have got..


You can also define this in the view.yml (apps/{app_name}/modules/{module_name}/config/view.yml) file for the module.

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


Oh ! As an alternative, I'd just say I have been using the routing system, which provides a pretty neat way to get it done:

-> In your routing.yml

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

Then, the frameworks will automatically pick up you view index.json.php, which you have to create. As mentioned above, you can generate the content in the action with json_encode, though there are arguments to put it in the view.

Now... Ok, if you are interested in picking some more about this, have a look at the "Practical symfony" tutorial: Day 15: Web Services There's some good stuff down there !


In a REST style, just add .format to the URI, create the relative template and Symfony Routing system does the rest of the work for us.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜