geekcell / imagekit-bundle
用于Imagekit集成的Symfony扩展包
1.0.4
2023-07-21 14:30 UTC
Requires
- imagekit/imagekit: ^3.0
- symfony/config: ^6.0
- symfony/dependency-injection: ^6.0
- symfony/http-kernel: ^6.0
- symfony/string: ^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.14
- mockery/mockery: ^1.5
- phpstan/phpstan: ^1.9
- phpstan/phpstan-mockery: ^1.1
- phpunit/phpunit: ^9.5
- symfony/framework-bundle: ^6.0
- symfony/yaml: ^6.0
README
一个用于与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_avatars
和user_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账户中配置的资产源。