JSON输出的要求

时间:2012-03-09 09:04:31

标签: php json lithium

我不确定要采取行动返回json需要什么 我确定有一种方法可以给这只猫上皮,但我不确定什么是绝对必需的。

只需$ this->渲染(数组(' json' => compact('数据'));?
我是否需要添加指定其json的路由?
我是否还需要添加媒体类型application / json?
我是否还需要添加默认布局default.json.php?
我是否还需要添加视图action.json.php?

注意:我想要任意网址:www.mysite.com/Controller/Action总是返回json。
我希望能够仅在我的动作中指定返回类型(即渲染类型)。

2 个答案:

答案 0 :(得分:5)

因此,当您在控制器操作底部返回数据时,除了此行之外,操作系统中没有任何内容需要:

    return $this->render(array('json' => $data = array(), 'status'=> 200));

应该注意的一些事情是从记录集返回的数据真的很难看。用户应首先执行$ recordset->到('array')。不知道为什么,但是('json')最终会转义所有引号,这使得json字符串真的很时髦。

答案 1 :(得分: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类完成的。我不知道你是否必须将Media.php添加到Bootstrap.php,只需尝试一下。

我想解释是,你不必提供视图或任何东西,因为Lithium已经知道如何呈现JSON。它还教你一些控制器实际应该做的事情,因为如果你为同一个动作写一个视图,它基本上需要相同的数据。

干杯