В моем приложении Laravel 5 я использовал фракталы и трансформаторы. В одном ответе я вложил два объекта, преобразованных в Trasnformers.Вложенный трансформатор Laravel 5 возврат «грязный json»
Вот мой код:
public function transform(UserLogin $userLogin)
{
$fractal = new Manager();
$fractal->setSerializer(new ArraySerializer());
$user = new Item($userLogin->user, new UserTransformer);
return [
"token" => $userLogin->token,
"user" => $fractal->createData($user)->toJson()
];
}
и вот преобразование Trasnformer Пользователь:
public function transform(User $user)
{
return [
'id'=> $user->id,
'name' => $user->firstname." ".$user->lastname,
'email' => $user->email,
];
}
И в мой контроллер я вернусь, как это:
return Fractal::item($userLogin, new UserLoginTransformer)->responseJson(200);
Вот ответ от сервера:
{
"token": "the_token_generated",
"user": "{\\\"id\\\":1,\\\"name\\\":\\\"Name\\\",\\\"email\\\":\\\"[email protected]\\\"}"
}
Что я делаю неправильно, чтобы показать все эти косые черты?
Он возвращает {} и никаких данных в «пользовательском» ключе – Bellots
@Bellots Что возвращает метод 'createData()'? Возможно, вам нужно что-то вроде 'toObject()' вместо 'toJson()' для возврата фактической информации. – jeroen
Это метод Fractal, и он принимает только toJson() или toArray() – Bellots