laravel/dingo API上的变压器用法 [英] Transformer usage on laravel/dingo API

查看:119
本文介绍了laravel/dingo API上的变压器用法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用laravel存储库模式创建一组REST API公开给我的移动应用程序.我正在使用dingo作为REST框架.我对应该如何使用转换器完成API的响应感到困惑.

I am creating a set of REST APIs to be exposed to my mobile apps using laravel repository pattern.I am using dingo as the REST framework.I am confused on how the response for the APIs should be done using a transformer.

我具有以下控制器功能

I have the below controller function

if(!$user) { 
    //Authenticate with Twitter and authenticate
    //Register user and issue jwt
    $user = Sentinel::register($device_details);
    $user_data = json_decode($user,true);
    $device_details['users_id'] = $user['users_id'] = $user_data['id'];
    $this->device_details->create($device_details);             
}
$token = JWTAuth::fromUser($user);
$user_array = $user->toArray();
$user_array['token'] = $token;   //An array containing user details and token
return $this->response->item($user_array, new UserTransformer)->setStatusCode(200);   //I can only pass an object (eloquent) as the #1 parameter

我的变形金刚班

namespace App\Api\V1\Transformers;

use App\User;
use League\Fractal\TransformerAbstract;

class UserTransformer extends TransformerAbstract {

    public function transform(User $user)
    {
        return [
            'users_id'     => (int) $user->users_id,
            'AUTH-TOKEN'   => $user->token // Doesnt comes from database,
...
        ];
    }
}

现在我的问题是,

  1. 我只能将雄辩的对象与变形金刚一起使用吗?
  2. 在这种情况下,令牌是由jwt库生成的,我将其与数组绑定为单个用户数组.现在如何将这个数组传递给演示者.
  3. 分形转换器的文档中没有提到将数组传递给演示者.我的数据可能并不总是来自雄辩的对象.
  4. 该如何处理?
  5. 为什么使用演示者?我可以使用演示者还是可以使用变形器?

推荐答案

我已经检查了您的代码,请检查以下可能适合您的代码.您必须通过$user而不转换为array:

I have check your code, Please check below code that might work for you. You have to pass $user without converting to array :

if(!$user) { 
             //Authenticate with Twitter and authenticate
            //Register user and issue jwt
            $user = Sentinel::register($device_details);
            $user_data = json_decode($user,true);
            $device_details['users_id'] = $user['users_id'] = $user_data['id'];
            $this->device_details->create($device_details);             
           }
   $token = JWTAuth::fromUser($user);
   $user_array = $user->toArray();
   $user_array['token'] = $token;   //An array containing user details and token
    $user->token = $token;
   return $this->response->item(UserTransformer::transform($user))->setStatusCode(200);   //I can only pass an object (eloquent) as the #1 parameter

这篇关于laravel/dingo API上的变压器用法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆