honl / magento2-import
Requires
- php: ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.2
- ext-mbstring: *
- bakame/psr7-csv-factory: ^1.0@dev
- ecomdev/magento-psr6-bridge: ^0.2.1
- guzzlehttp/guzzle: ^7
- kevinrob/guzzle-cache-middleware: ^4
- league/csv: ^9.1
- monolog/monolog: ^2.8
- prewk/xml-string-streamer: ^1.2
- prewk/xml-string-streamer-guzzle: ^1.2
- symfony/stopwatch: ^v6.2
- dev-master
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- 0.4.0
- dev-tenkate
- dev-tenkate247
- dev-php74
- dev-revert-36-STEUN-409
- dev-STEUN-409
- dev-feature/uppercase-sku-fix
- dev-feature/add_compatiblity
- dev-feature/TEN-522
- dev-multiconfigurable
- dev-develop
This package is auto-updated.
Last update: 2024-09-16 14:17:37 UTC
README
导入库,用于创建用于导入产品/类别的数组接口。Ho_Import建立在Magento的内部导入/导出模块之上。
库的目标是成为Magento 2导入产品的瑞士军刀。功能包括
- 通过HTTP和磁盘流式传输XML
- 从HTTP(s)/FTP下载文件
- 将源文件中的项目映射到Magento格式
- 大量的 行修改器
- 修复了导入核心的bug
安装
composer config repositories.honl/magento2-import vcs git@github.com:ho-nl/magento2-Ho_Import.git composer require honl/magento2-import
目标
性能:由于构建导入(真的很困难)需要大量反馈循环才能正确地获取数据(更改、检查、更改、检查),因此确保其尽可能快是绝对必要的。如果每次更改后都要等待10分钟,则开发者无法工作。因此,只需要等待几秒钟即可在Magento中看到要导入的内容是至关重要的。
易用性:API应该是清晰的,开发者只能受限于他们对Magento自身知识的了解。没有初级开发人员应该需要考虑流文件、性能和内存使用。
可扩展性:应该非常容易扩展和定制导入
可维护性:该库应该有一个稳定的API(目前尚不稳定),这样我们就可以升级一年前构建的导入,而不用担心一切都会出错。
正确获取抽象
对于Magento 1的Ho_Import,我们创建了一个自定义DSL,将外部文件映射到与Magento兼容的格式。这行得通,但我们很快发现,我们还需要在导入器中实现大量的基本PHP功能。我们在Ho_Import兼容的包装器中实现了PHP功能...
另一种选择是直接使用Avs_FastSimpleImport,它除了“你可以填充这个数组”之外没有提供任何抽象。虽然这比“创建自己的csv文件”前进了一大步,但它没有提供任何工具来使构建导入更容易、更健壮和更快。
现在,为Magento 2编写新的导入库并从头开始,这是一个创建新抽象的好时机。假设需要构建导入的人至少了解Magento 2编程的基础知识,我们可以创建一个不依赖于“美好的抽象”,但提供快速启动导入的工具的导入。
- 创建一个单个类文件以创建一个功能齐全的导入。如果类太复杂,开发者可以决定自己拆分逻辑。
- 使用行修改器修改数据,并使其他开发人员能够轻松创建新的
新导入库的核心概念基于行修改器。
什么是行修改器?
行修改器可以更新项目、添加项目、删除项目、添加新值、重写值、验证行等。
示例使用 \Ho\Import\RowModifier\ItemMapper
$items = [ ... ]; //Array of all products /** @var \Ho\Import\RowModifier\ItemMapper $itemMapper */ $itemMapper = $this->itemMapperFactory->create([ 'mapping' => [ 'store_view_code' => \Ho\Import\RowModifier\ItemMapper::FIELD_EMPTY, 'sku' => function ($item) { return $item['ItemCode']; } 'name' => function ($item) { return $item['NameField'] . $item['ColorCode']; } ] ]); $itemMapper->setItems($items); $itemMapper->process($items); //The items array is modified with new values.
所有行修改器都从 \Ho\Import\RowModifier\AbstractRowModifier
继承
一般假设
- 编写导入的人是程序员或至少具备基本的编程知识。
- Magento的导入器功能有限,肯定不能“Just Work™”,我们需要在其之上构建抽象,以便真正专注于导入,而不是导入带来的所有“杂物”。
技术假设
- PHP的数组格式足够高效,可以在内存中存储所有需要导入的产品。例如,5万件产品需要更多的内存,但通常在配置强大的服务器上运行。
贡献者
在H&O,我们已经为许多客户创建了导入,我们扩展了Ho_Import,是Avs_FastSimpleImport的核心贡献者
将源文件映射到与Magento兼容的格式,但从未打算解决URL重写、创建可配置项等问题。所有这些功能
此库建立在Magento内部导入/导出模块之上
控制台命令
ho:import:run profileName
直接运行导入脚本(不建议在实时环境中使用,可能导致死锁)。
cron:schedule jobName
安排一个任务立即运行。
致谢
该模块由Paul Hachmang编写(twitter: @paales,邮箱: paul@reachdigital.nl)并专为Reach Digital构建。我们制作Magento Webshops(网站: https://www.reachdigital.nl/,邮箱: info@reachdigital.nl,twitter: @ho_nl)。