首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fractal.php线路348中的Laravel 5.4 - InvalidTransformation。

Fractal.php线路348中的Laravel 5.4 - InvalidTransformation。
EN

Stack Overflow用户
提问于 2017-04-08 05:00:28
回答 1查看 122关注 0票数 0

如你所知,laravel-fractal是最好的API开发包之一。从今天开始,我面临着一个问题,当我试图将代码部署到远程服务器时,会抛出像标题这样的错误。我想让你知道,build在我的本地机器上运行得很好。

当我在UserTransformer中dd $user时,所有属性看起来都很好,而且不出所料,它是一个用户实例。我也有同样的问题,类别,新闻和页面转换器。有一个变压器在工作,但结构是相同的,所以我不知道发生了什么。

下面是我的代码片段:

UserTransformer.php

代码语言:javascript
复制
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

代码语言:javascript
复制
class TokenTransformer extends TransformerAbstract
{
    /**
     * A Fractal transformer.
     * @param $token
     * @return array
     */
    public function transform($token)
    {
        return [
            'token' => $token
        ];
    }
}

api.php

代码语言:javascript
复制
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return fractal()
        ->item($request->user())
        ->transformWith(new \App\Transformers\Auth\UserTransformer)
        ->toArray();
});

错误:

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
public function show(Category $category,Request $request){

    //API

        return fractal()
            ->item($category)
            ->transformWith(new CategoryTransformer())
            ->parseIncludes(['pages','nodes.pages'])
            ->toArray();


}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-04-08 05:58:10

稍加研究后,我发现我的语言环境是tr,在Fractal.php第345行,大写的'i‘是'İ’,而不是'I‘。

代码语言:javascript
复制
$resourceClass = 'League\\Fractal\\Resource\\'.ucfirst($this->dataType);

返回League\Fractal\Resource\item而不是League\Fractal\Resource\Item

我不知道如何在不更改src代码的情况下修复它。但现在,我将api路由和控制器的locale更改为en,看起来还不错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43287014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档