whitedigital-eu / storage-item-resource
存储项资源
0.3.1
2024-05-15 15:14 UTC
Requires
- php: >=8.1.0
- ext-exif: *
- api-platform/core: ^3
- doctrine/annotations: *
- doctrine/doctrine-bundle: *
- doctrine/orm: *
- doctrine/persistence: *
- symfony/config: *
- symfony/framework-bundle: *
- symfony/http-foundation: *
- symfony/http-kernel: *
- symfony/property-info: *
- symfony/security-core: *
- symfony/serializer: *
- symfony/translation: *
- symfony/validator: *
- vich/uploader-bundle: *
- whitedigital-eu/entity-resource-mapper-bundle: *
Requires (Dev)
Conflicts
This package is auto-updated.
Last update: 2024-09-15 16:03:27 UTC
README
系统要求
PHP 8.1+
Symfony 6.2+
安装
推荐使用 Composer 进行安装
composer require whitedigital-eu/storage-item-resource
借助 vich/uploader-bundle
包,当与 api platform 一起使用时,此包支持文件上传。之后,您需要更新数据库模式以使用 StorageItem 实体。
如果使用迁移
bin/console doctrine:migrations:diff bin/console doctrine:migrations:migrate
如果通过模式更新
bin/console doctrine:schema:update --force
这将启用新的 StorageItem
API 资源,iri 为 /api/storage_items
。如果您想使用不同的 iri,请参阅 https://github.com/whitedigital-eu/entity-resource-mapper#extended-api-resource 了解如何覆盖它。
覆盖默认 API 资源(以及因此 API 端点)
默认情况下,StorageItem 资源基于 StorageItemResource
如果您希望不使用此资源且不公开它提供的 API 端点,只需使用配置值设置自定义 API 资源路径。如果将其设置为 null
,则 api platform 不会注册此包内位于的资源。
storage_item_resource: custom_api_resource_path: '%kernel.project_dir%/src/MyCustomPath' # custom_api_resource_path: null
use Symfony\Config\StorageItemResourceConfig; return static function (StorageItemResourceConfig $config): void { $config->customApiResourcePath('%kernel.project_dir%/src/MyCustomPath') // or ->customApiResourcePath(null); };
在覆盖默认 API 资源后,不要忘记更新用于在 whitedigital-eu/entity-resource-mapper-bundle
中进行资源 <-> 实体映射的 ClassMapperConfigurator 配置。
use App\ApiResource\Admin\StorageItemResource; use WhiteDigital\StorageItem\Entity\StorageItem; use WhiteDigital\EntityResourceMapper\Mapper\ClassMapper; use WhiteDigital\EntityResourceMapper\Mapper\ClassMapperConfiguratorInterface; final class ClassMapperConfigurator implements ClassMapperConfiguratorInterface { public function __invoke(ClassMapper $classMapper): void { $classMapper->registerMapping(StorageItemResource::class, StorageItem::class); } }