enanobots / m2-datapatchcreator
Installs: 43 198
Dependents: 0
Suggesters: 0
Security: 0
Stars: 51
Watchers: 2
Forks: 13
Open Issues: 3
Requires
- php: >=8.1
- qoliber/core: *
README
Magento 2 DataPatchCreator
When working with large teams, many times someone forgets to create
a data patch for a cms page, block, configuration or a product attribute.
This module allows you to create PHP Data Patch Files
in Magento 2 Admin panel and export
them to PHP
files which you can add to your code repositories.
Important:
This main version of the module does not work with PageBuilder
to assure 2.3.x
version compatibility.
If you want to make it work with PageBuilder
from Magento 2.4.3 it is required to install additional composer package:
qoliber/datapatchcreator-pagebuilder
Details: https://github.com/qoliber/datapatchcreator-pagebuilder-compatibility
Installation
Installation is via composer
composer require qoliber/datapatchcreator
After installing the packages just run:
php bin/magento setup:upgrade
Requirements:
PHP 8.1
and higherMagento 2.3.x
and higher
Tested on:
Magento 2.3.x
OpenSourceMagento 2.4.x
OpenSource
Available Data Types for data patches:
- Product Attributes (with image swatches sync)
- CMS Pages
- CMS Blocks
- Store Configuration
- more to come in future releases
How to create data patches?
You do everything in Magento 2 admin panel. :)
There are 2 ways to create Magento 2 Data Patch files:
- direct download (DEFAULT OPTION):
- for a single entity, a
PHP
file is generated - for sets of data patch files (Mass Exports), a
ZIP
file containing patch files is generated
- for a single entity, a
- local files:
- files are always created in specified location (both for single entities and mass exports)
Sync images between store copies:
Module allows images synchronization between Magento 2 store copies.
Class used to dump / fetch
images needs to implement ImageSyncInterface
Default Image sync: LocalFile
- Files are copied to target location when patch file is created
- Files are copied from configured location to Magento 2
media
folded
Adding new Image Sync Models:
Image Sync Models are passed into array
of ImageSync
class via DI.XML
<type name="Qoliber\DataPatchCreator\Model\ImagesSync\ImageSync"> <arguments> <argument name="syncModels" xsi:type="array"> <item name="LocalFile" xsi:type="object">Qoliber\DataPatchCreator\Model\ImagesSync\LocalFile</item> </argument> </arguments> </type>
If you want to add a new ImageSync
model, just add a new element to syncModels
array via di.xml
This key needs to match the store configuration set for
sync_model
configuration value.
Create a plugin for SyncMethods
and make sure the value
field matches
array key passed in di.xml
.
For example:
<type name="Qoliber\DataPatchCreator\Model\ImagesSync\ImageSync"> <arguments> <argument name="syncModels" xsi:type="array"> <item name="AmazonS3" xsi:type="object">YourVendor\YourModule\ImagesSync\AmazonS3</item> </argument> </arguments> </type>
return [ ['value' => "AmazonS3", 'label' => __('Copy images to designated folder')], ];
Setting configuration in the admin panel will make force usage of your module for images sync.
Suggested Packages:
- PageBuilder Compatibility: https://github.com/qoliber/m2-datapatchcreator-pagebuilder-compatibility