aa / akeneo-data-loader
此包最新版本(dev-master)没有可用的许可信息。
Akeneo PIM 数据加载器
dev-master
2021-08-09 11:33 UTC
Requires
- php: >=7.2
- akeneo/api-php-client-ee: ^4.0
- php-http/guzzle6-adapter: ^2.0
Requires (Dev)
- phpspec/phpspec: ^5.1
- phpstan/phpstan: ^0.11.7
This package is auto-updated.
Last update: 2024-09-09 18:39:49 UTC
README
Akeneo 数据加载器可以帮助您通过其 REST API 将数据加载到 Akeneo PIM。
使用场景
- 加载 YAML 固定数据用于测试、本地开发或性能基准测试。
- 从外部系统(旧版 PIM 或常规数据提供商)导入产品数据。
功能
- 支持批量数据上传(upsert 模式)。
- 简化媒体文件的导入。
示例
从数组加载
use Aa\AkeneoDataLoader\Api; use Aa\AkeneoDataLoader\LoaderFactory; $factory = new LoaderFactory(); $apiCredentials = Api\Credentials::create('https://your.akeneo.host/', 'clientId', 'secret', 'username', 'password'); $loader = $factory->createByCredentials($apiCredentials); $loader->load('product', [ [ 'identifier' => 'test-product', 'enabled' => true, 'family' => 'accessories', 'categories' => [ 'master_accessories', 'print_accessories', 'suppliers', ], 'values' => [ 'ean' => [[ 'locale' => null, 'scope' => null, 'data' => '1234567890183' ]], 'name' => [[ 'locale' => null, 'scope' => null, 'data' => 'Test product' ]], 'image' => [[ 'locale' => null, 'scope' => null, 'data' => '@file:asset/1111111171.jpg' ]], 'weight' => [[ 'locale' => null, 'scope' => null, 'data' => [ 'amount' => '500.0000', 'unit' => 'GRAM' ] ]], ], ], ]);
- 查看如何加载媒体文件,如果您想知道
@file:
的含义。
从 YAML 文件加载
use Aa\AkeneoDataLoader\Api; use Aa\AkeneoDataLoader\LoaderFactory; use Symfony\Component\Yaml\Yaml; $factory = new LoaderFactory(); $apiCredentials = Api\Credentials::create('https://your.akeneo.host/', 'clientId', 'secret', 'username', 'password'); $loader = $factory->createByCredentials($apiCredentials); $productData = Yaml::parse(file_get_contents('data/product.yaml')); $loader->load('product', $productData);
如何使用数据加载器加载数据
如您所见,加载数据需要了解
- Akeneo 主机地址和 API 凭据
- 数据类型
- 数据格式
1. Akeneo 主机地址和 API 凭据
我希望您知道您的 Akeneo 主机,因此通过创建一个 Credentials
对象来使用它。
此外,您需要知道您将要用于通过 API 连接的用户的名字和密码。
最后但同样重要的是,您需要 API 连接的客户端 ID 和密钥。
您可以在 Akeneo 的 系统 > API 连接
部分中创建一个连接,或使用控制台命令来生成它
bin/console pim:oauth-server:create-client Import
2. 数据类型
数据加载器支持以下数据类型
- 渠道
- 类别
- 属性组
- 属性
- 属性选项
- 家族
- 家族变体
- 产品模型
- 产品
以及以下企业版数据类型
- 资产
- 资产变体文件
- 资产引用文件
- 参考实体
- 参考实体记录
3. 数据格式
数据格式是 Akeneo REST API 的格式。
还可以查看代表数据格式的YAML 文件示例。
如何加载媒体文件
您可以简单地上传一个文件,并将其指定为图像或文件属性的值。
$loader->load('product', [ 'values' => [ 'image' => [ [ 'locale' => 'en_US', 'scope' => 'ecommerce', 'data' => '@file:relative/path/to/your/asset.jpg' ], ], ], ]);
前缀 @file:
告诉 Akeneo 数据加载器读取此媒体文件 relative/path/to/your/asset.jpg
并将其指定为 image
属性的值。
您可以使用 LoaderFactory 的配置指定媒体文件的基本目录路径
use Aa\AkeneoDataLoader\LoaderFactory; use Aa\AkeneoDataLoader\Connector\Configuration; $configuration = Configurationcreate('assets/baseDir/path'); $factory = new LoaderFactory($configuration);
如何查询和修改数据
您可以使用数据加载器修改使用 Akeneo API 获取的数据。
use Aa\AkeneoDataLoader\Api; use Aa\AkeneoDataLoader\LoaderFactory; use Akeneo\Pim\ApiClient\AkeneoPimClientBuilder; use Akeneo\Pim\ApiClient\Search\SearchBuilder; // Fetch data using Akeneo UPI $clientBuilder = new AkeneoPimClientBuilder('https://your.akeneo.host/'); $client = $clientBuilder->buildAuthenticatedByPassword('clientId', 'secret', 'admin', 'admin'); $searchBuilder = new SearchBuilder(); $searchBuilder->addFilter('price', 'EMPTY'); $searchFilters = $searchBuilder->getFilters(); $products = $client->getProductApi()->all(100, ['search' => $searchFilters]); // Send modified data back $factory = new LoaderFactory(); $apiCredentials = Api\Credentials::create( 'https://your.akeneo.host/', 'clientId', 'secret', 'admin', 'admin'); $loader = $factory->createByCredentials($apiCredentials); foreach ($products as $product) { $product['enabled'] = false; $loader->load('product', [$product]); }