如您所知,laravel-fractal是API開發的最大包裝之一。 從今天開始,我正面臨着一個問題,當我嘗試將代碼部署到遠程服務器時,會引發像標題一樣的錯誤。我想讓你知道,在我的本地機器上完美地構建作品。Laravel 5.4 - Fractal.php行348中的InvalidTransformation。
當我在UserTransformer中的$用戶,所有屬性看起來不錯,它是一個用戶實例預期。我也有類別,新聞和網頁變壓器相同的問題。有一個變壓器工作,但結構相同,所以我無法弄清楚發生了什麼事情。
這裏是我的代碼片段:
UserTransformer.php
class UserTransformer extends TransformerAbstract
{
protected $defaultIncludes = ['token'];
/**
* A Fractal transformer.
* @param User $user
* @return array
*/
public function transform(User $user)
{
return [
'email' => $user->email,
];
}
public function includeToken(User $user){
$token = $user->createToken('Access')->accessToken;
return $this->item($token,new TokenTransformer());
}
}
TokenTransformer.php
class TokenTransformer extends TransformerAbstract
{
/**
* A Fractal transformer.
* @param $token
* @return array
*/
public function transform($token)
{
return [
'token' => $token
];
}
}
api.php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return fractal()
->item($request->user())
->transformWith(new \App\Transformers\Auth\UserTransformer)
->toArray();
});
錯誤:
InvalidTransformation in Fractal.php line 348:
in Fractal.php line 348
at Fractal->getResource() in Fractal.php line 333
at Fractal->createData() in Fractal.php line 304
at Fractal->toArray() in api.php line 20
at Router->{closure}(object(Request)) in Route.php line 189
也許我失去了一些東西,所以我張貼類別變壓器過
CategoryTransformer.php
class CategoryTransformer extends TransformerAbstract
{
protected $defaultIncludes = ['nodes'];
protected $availableIncludes = ['pages'];
/**
* A Fractal transformer.
* @param Category $category
* @return array
*/
public function transform(Category $category=null)
{
if($category){
return [
'parent' => $category->parent->slug ?? false,
'name' => $category->name,
'slug' => $category->slug,
'page_count' => $category->pages()->count(),
'info' => []
];
}
return [];
}
public function includeNodes(Category $category){
$nodes = $category->children;
return $this->collection($nodes,new CategoryTransformer,['nodes']);
}
public function includePages(Category $category){
return $this->collection($category->pages,new PageTransformer());
}
}
CategoryController.php
public function show(Category $category,Request $request){
//API
return fractal()
->item($category)
->transformWith(new CategoryTransformer())
->parseIncludes(['pages','nodes.pages'])
->toArray();
}
感謝。