2012-03-09 11 views
1

jsonを返すために必要なことは本当にわかりません。
私はこの猫を皮膚にさらす方法が一つはあると確信していますが、絶対に必要なものは何か分かりません。JSON出力の必要条件

はちょうどます$ this-に、それが適切である>(配列( 'JSON' =>コンパクト( 'データ' のレンダリング));?
私はそのJSONを指定してルートを追加する必要がありますか
また、私は必要ですか? ???メディアタイプapplication/jsonの
私も、デフォルトのレイアウトdefault.json.phpを追加する必要がありますか
私もビューaction.json.phpを追加する必要がありますか

ノートを追加するには:私が欲しいです任意のURL:www.mysite.com/Controller/Action常にjsonを返します。
私のアクションでは戻り値の型を指定することができます(つまり、rende rタイプ)。

+0

このZend Frameworkはお求めですか? – quickshiftin

+0

nm、私は今、lithumのタグを参照してください – quickshiftin

答えて

5

だから、それはあなたがコントローラのアクションの下部にデータを返すときに、この行を他に必要とされるオペアンプでは何も判明していませんレコードセットから返されるデータは実際には醜いです。まず、$ recordset-> to( '配列')を実行する必要があります。理由は分かりませんが、( 'json')はすべての引用符をエスケープしてしまい、jsonの文字列は本当にファンキーになります。

+0

これは有効なはずですが、私の投稿に対するあなたのコメントについてもフォローアップを確認してください – Tomen

0

JSONを返すのは、思ったよりも簡単です。私は最近、それをやったと私はちょうど私が開発していたゲームを参照のうえであなたにそれを示して

驚いた - https://github.com/BitAlchemists/Elenears-Erben/blob/master/app/controllers/MapsController.phpあり

public function view() 
{ 
    $gameId = $this->request->params['id']; 
    if($gameId == null) 
    { 
     return new Response(); 
    } 

    $xSize = 10; 
    $ySize = 10; 
    $fields = Maps::first(array('game_id' => $gameId))->fields; 
    return compact('xSize', 'ySize', 'fields'); 
} 

をあなたが行く:あなたは自分のデータを準備し、それを返します。魔法はMediaクラスによって行われます。 Bootstrap.phpにMedia.phpを追加する必要があるかどうかは分かりません。試してみてください。

リチウムはすでにJSONの表示方法を知っているので、説明は必要ありません。また、同じアクションのビューを作成する場合は、基本的に同じデータが必要になるため、コントローラーが実際に行うべきことを教えてくれます。

に注意すべき
return $this->render(array('json' => $data = array(), 'status'=> 200)); 

代のことです:

乾杯

+0

それは私のために働いていなかったので、私は間違った何かをしているに違いありません。私は最新のものをダウンロードして、シンプルなコントローラをまとめようとします。 –

+0

フィッティングルートを有効にしましたか?あなたはRouter :: connect( '/ {:controller}/{:action}/{:id:[0-9a-f] {24}}。{:type}'、array( 'id' => null)); – Tomen

+1

私はしませんでしたが、APIはプライベートなので、ユーザーがGETやルート経由でデータを取得できるようにするつもりはありません。また、テストプロジェクトもそれを必要としませんでしたので、私は私の答えで良いです。返信をありがとう。 –