2014-02-07 36 views
1

因此,我正在生成一個生成json響應而不是執行View::make('foo', compact('bar'))的API。在Laravel json響應中使用訪問器和增變器

使用刀片式模板

我控制器簡單地返回Users雄辯的模型:

public function index() 
{ 
    return User::all(); 
} 
protected function getFooAttribute() 
{ 
    return 'bar'; 
} 

而且我認爲將能夠使用它,用foo屬性一起(這是不用戶表中的一個字段)。

@foreach($users as $user) 
<p>{{$user->name}} {{$user->foo}}</p> 
@endforeach 

具有角JS + JSON響應

然而,現在我不使用刀,而是抓住了json與角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; 
} 

回答

10

呀存在,例如:

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';  
} 
+0

這很奇怪,我從這兩個例子中得到一個空的響應'[{}]'。所以不會讓我修復你的錯誤('User :: all()')。我試着添加'$ appends',這似乎已經修復了它與我的代碼不工作與'Response :: json()'仍然。 – tiffanyhwang

+0

@thwa你是什麼意思?我很困惑.. – SamV