所以我正在制作一个产生json响应而不是View::make('foo', compact('bar'))
的API。
使用刀片模板
我的控制器只返回Users
的Eloquent模型:
public function index()
{
return User::all();
}
protected function getFooAttribute()
{
return 'bar';
}
我的视图将能够使用它,以及foo
属性(不是用户表中的字段)。
@foreach($users as $user)
<p>{{$user->name}} {{$user->foo}}</p>
@endforeach
使用Angular JS + json响应
然而,既然我没有使用刀片而是抓住json
并使用Angular JS显示它我无法做到这一点:
<p ng-repeat="user in users">{{user.name}} {{user.foo}}</p>
有没有办法干净地打包json响应,以便我有:
[{"name": "John", "foo": "bar"}, ...]
警告:我以前从未构建过API,去年12月我才开始编程/ web开发。这是我的尝试:
public function index()
{
$response = User::all();
foreach($response as $r)
{
$r->foo = $r->foo;
}
return $response;
}
答案 0 :(得分:18)
是的,例如:
return Response::json([User:all()], 200);
通常你想要更多但是......
return Response::json([
'error' => false,
'data' => User:all()
], 200);
200
是HTTP状态代码。
要包含指定这些属性所需的属性,以自动附加到模型中的响应中。
protected $appends = array('foo');
public function getFooAttribute()
{
return 'bar';
}