geekcell/imagekit-bundle

用于Imagekit集成的Symfony扩展包

1.0.4 2023-07-21 14:30 UTC

This package is auto-updated.

Last update: 2024-09-21 17:16:30 UTC


README

Unit tests workflow status Coverage Bugs Maintainability Rating Quality Gate Status

一个用于与ImageKit PHP SDK无缝集成的Symfony扩展包。

安装

要使用此包,请使用Composer在您的Symfony项目中引入它。

composer require geekcell/imagekit-bundle

请确保在config/bundles.php中已启用此扩展包

<?php

return [
    // other bundles ...
    GeekCell\ImagekitBundle\GeekCellImagekitBundle::class => ['all' => true],
];

使用方法

此扩展包使用“提供者”的概念来返回ImageKit资产。与提供者交互的推荐方法是配置它们在config/packages/geek_cell_imagekit.yaml

geek_cell_imagekit:
    public_key: '%env(IMAGEKIT_PUBLIC_KEY)%'
    private_key: '%env(IMAGEKIT_PRIVATE_KEY)%'
    base_url: 'https://ik.imagekit.io'
    configurations:
        user_avatars:
            endpoint: '/user/avatars'
            transformation:
                width: 150
                height: 150
                quality: 70
            signed: false
        user_profile_images:
            endpoint: '/user/profile_images'
            transformation:
                width: 800
                height: 800
                quality: 80
            signed: true
            expires: 3600

在上面的示例中,我们定义了两个配置,分别称为user_avatarsuser_profile_images。目前支持以下设置

  • endpoint - 在您的ImageKit账户中配置的自定义端点。
  • transformation - 应用到资产上的转换的键值对。点击此处查看支持的全部转换列表。
  • signed - 将签名附加到资产的URL上。
  • expires - 以秒为单位的过期时间;如果将signed设置为true,则必须设置此选项。

如果您在Symfony项目中使用自动注入,则可以简单地在服务和/或控制器中类型提示GeekCell\ImagekitBundle\Imagekit\ProviderRegistry以注入一个注册表,您可以从中通过名称检索每个配置的提供者。

#[AsController]
class AvatarController extends AbstractController
{
    private Provider $avatarProvider;

    public function __construct(ProviderRegistry $registry)
    {
        $this->avatarProvider = $registry->getProvider('user_avatars');
    }

    #[Route('/avatar', name: 'avatar')]
    public function avatar()
    {
        $asset = $this->avatarProvider->provide('some-username.png');
        
        return new JsonResponse([
            'url' => $asset->getUrl(),
        ]);
    }
}

在实际应用中,当然会替换硬编码的some-username.png路径,用从数据存储返回的路径替换,该路径对应于您在ImageKit账户中配置的资产源。