题
我不确定需要什么来使操作返回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。它还教你一些控制器实际上应该做的事情,因为如果你为相同的动作编写一个视图,它基本上需要相同的数据。
干杯!