我們將用戶偏好設置爲JSON。由於我們的應用程序充當API,所以響應也以JSON形式返回,但首選項字段以字符串形式返回。我想確保在發送任何響應之前始終對這部分對象進行解碼,例如Laravel 4 - 如何在每次訪問時json_decode字段?
$user->prefs = json_decode($user->prefs);
但是哪裏?我應該看看「超載」用戶索引方法嗎?這是更多的before_filter行動?什麼是laravel這樣做的方法?
我們將用戶偏好設置爲JSON。由於我們的應用程序充當API,所以響應也以JSON形式返回,但首選項字段以字符串形式返回。我想確保在發送任何響應之前始終對這部分對象進行解碼,例如Laravel 4 - 如何在每次訪問時json_decode字段?
$user->prefs = json_decode($user->prefs);
但是哪裏?我應該看看「超載」用戶索引方法嗎?這是更多的before_filter行動?什麼是laravel這樣做的方法?
在您的模型上使用一個Eloquent存取器:
public function getPreferencesAttribute($value)
{
return json_decode($value);
}
然後你只需要:
$user = User::find($id);
return $user->preferences;
我會嘗試你的模型
編寫方法在您的情況:
public function prefAsJson()
{
return json_decode($this->prefs);
}
您現在可以使用這樣的:$user->prefAsJson()
//編輯:我的第一個答案是剛錯誤
這樣做的面向對象的方法是不能直接訪問的屬性,而是使用「干將」和「爲你的交互做準備。在這種情況下,你會怎麼做:
class User {
public function getPrefs() {
return json_decode($this->prefs);
}
}
是'$ user'雄辯模型的實例? – Kryten
是的。我們還使用laravel-auth-token,所以它也被用作驅動程序以及... – Aaron