Laravel dingoApi 的 Transformers 问题?

然而我还想调用AuthenticateTransformers里的getAuthenticatedUser怎么能做到?不会一个Transformers就执行一个function吧.... 以下是代码

// Transformers
class AuthenticateTransformers extends TransformerAbstract
{
    /**
     * @param \App\Models\Customer $customer
     *
     * @return array
     */
    public function transform(Customer $customer)
    {
        return [
            'id' => $customer['id'],
            'name' => $customer['name'],
            'username' => $customer['username']
        ];
    }

    /**
     * @param \App\Models\Customer $customer
     *
     * @return array
     */
    public function getAuthenticatedUser(Customer $customer)
    {
        return [
            'id' => $customer['id'],
            'name' => $customer['name'],
            'username' => $customer['username'],
            'secret' => $customer['secret'],
            'startDate' => $customer['startDate']
        ];
    }
}

// 回调
return $this->item($customer, new AuthenticateTransformers, function ($resource, $fractal) {

            $fractal->setSerializer(new CustomSerializer());

});

// 然而我还想调用`AuthenticateTransformers`里的`getAuthenticatedUser`怎么能做到?不会一个Transformers就执行一个`function`吧....
与其感慨路难行,不如马上出发。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 3

用传统的方法确实只会调用 transform() , 你可以参考一下在 transform() 里面调用,或者在外部 (new AuthenticateTransformers)->getAuthenticatedUser($customer)

    public function transform(Customer $customer)
    {
        return [
            'id' => $customer['id'],
            'name' => $customer['name'],
            'username' => $customer['username'],
            'user' => $this->getAuthenticatedUser($customer)
        ];
    }
7年前 评论

@小恪守 谢谢解惑,本以为transform会像Repositories方式调用居然不行...

7年前 评论

@小恪守 好像不行耶,我现在遇到了一个同样的问题,帖子地址 问答:求助 dingoApi + league/fractal 中,调用 transformer 中的另一个方...
在外部 (new AuthenticateTransformers)->getAuthenticatedUser($customer) 的这种方式依然是调用默认的 transformer 方法,但是在 transform 内部调用,似乎失去了 transform 的本意。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!