/m2-datapatchcreator

Primary LanguagePHPOpen Software License 3.0OSL-3.0

Open Source Love

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 higher
  • Magento 2.3.x and higher

Tested on:

  • Magento 2.3.x OpenSource
  • Magento 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
  • 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: