paymaxi/fractal-bundle

此包已被弃用且不再维护。未建议替代包。

League 开发的用于 Fractal 的 Symfony2 扩展包。实现将依赖注入到您的转换器中。

v1.0.4 2018-02-19 14:20 UTC

This package is not auto-updated.

Last update: 2023-03-09 11:01:45 UTC


README

Build Status Quality Score Coverage Status Latest Version on Packagist Total Downloads Software License

此包提供了对 league/fractal 的集成,用于 Symfony。此外,它允许您将转换器作为服务使用。

入门

首先,您需要将依赖项添加到 composer.json 文件中

composer require paymaxi/fractal-bundle

然后,在 app/AppKernel.php 文件中注册此包

public function registerBundles()
{
    return [
        // ...
        new Paymaxi\FractalBundle\PaymaxiFractalBundle(),
    ];
}

现在我们可以编写和使用 fractal 转换器了

将转换器作为服务使用

在需要将某些依赖项传递到转换器的情况下,有几种情况。一个常见的情况是在转换器中基于角色/范围的结果,例如,您可能只想向管理员或用户资料的所有者显示 email 字段。

class UserTransformer extends TransformerAbstract
{
    private $authorizationCheker;
    
    public function __construct(AuthorizationChecker $authorizationCheker)
    {
        $this->authorizationCheker = $authorizationCheker;
    }
    
    public function transform(User $user)
    {
        $data = [
            'id' => $user->id(),
            'name' => $user->name(),
        ];
        
        if ($this->authorizationChecker->isGranted(UserVoter::SEE_EMAIL, $user)) {
            $data['email'] = $user->email();
        }
        
        return $data;
    }
}

然后,您可以仅将此类注册为服务,并将服务 ID 作为转换器传递。此包将尝试从容器中获取它

$resource = new Collection($users, 'app.transformer.user');

这同样适用于 includes

public function includeFriends(User $user)
{    
    return $this->collection($user->friends(), 'app.transformer.user');
}

您可以在 示例应用程序 中查看如何使用转换器的示例,该应用程序用于测试套件。

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件