whitedigital-eu/storage-item-resource

存储项资源


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);
    }
}