我不确定需要什么来使操作返回json。
我敢肯定有更多那么一种方法来剥这只猫的皮,但我不确定什么是绝对需要的。

仅仅$this->render(array('json'=>compact('data'))是否足够;?
我是否需要添加指定其json的路由?
我是否还需要添加媒体类型application/json?
我是否还需要添加默认布局默认值。json。php?
我是否还需要添加视图操作。json。php?

注意事项:我想要任何任意url:www.mysite.com/Controller/Action 要始终返回json。
我更希望能够仅在我的操作中指定返回类型(即渲染类型)。

有帮助吗?

解决方案

因此,当您在控制器底部返回数据时,它需要在OP中的任何内容才能返回此行:

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

应该注意的是,从记录集返回的数据非常丑陋。用户应该首先执行$ Recordset->(“数组”)。不确定为什么,但是('json')最终逃避了所有引号,这使得json字符串真的很好。

其他提示

返回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 类。不知道你是否必须添加媒体。php到Bootstrap。php,只是尝试一下。

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

干杯!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top