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.
Installation is via composer
composer require enanobots/m2-datapatchcreator
After installing the packages just run:
php bin/magento setup:upgrade
PHP 7.3
and higherMagento 2.3.x
and higher
Magento 2.3.x
OpenSourceMagento 2.4.x
OpenSource
- Product Attributes (with image swatches sync)
- CMS Pages
- CMS Blocks
- Store Configuration
- more to come in future releases
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)
Module allows images synchronization between Magento 2 store copies.
Class used to dump / fetch
images needs to implement ImageSyncInterface
- Files are copied to target location when patch file is created
- Files are copied from configured location to Magento 2
media
folded
Image Sync Models are passed into array
of ImageSync
class via DI.XML
<type name="Nanobots\DataPatchCreator\Model\ImagesSync\ImageSync">
<arguments>
<argument name="syncModels" xsi:type="array">
<item name="LocalFile" xsi:type="object">Nanobots\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="Nanobots\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.