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`吧....
与其感慨路难行,不如马上出发。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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)
        ];
    }
6年前 评论

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

6年前 评论

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

4年前 评论

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