Les datapatches magento permettent de déployer rapidement des changements spécifiques via un module sur l’ensemble des environnements de votre projet de manière automatique.
- Ils sont rangés dans le dossier Setup/Patch/Data de votre module et ils implémentent l’interface \Magento\Framework\Setup\Patch\DataPatchInterface
- Il sont appliqués automatiquement si nécessaire uniquement lors de l’exécution de la commande bin/magento setup:upgrade
Dans le cas de la réalisation de patchs complexes il peut être nécessaire de les rejouer plusieurs fois pour vérifier que tout fonctionne correctement.
La procédure à effectuer est la suivante :
- Suppression du patch dans la base de données dans la table patch_list
- Exécution de la commande bin/magento setup:upgrade
Cette procédure est relativement lente comme l’exécution du setup:upgrade est longue, car magento réalise pleins d’opérations autres que l’application des patches.
Nous allons voir ici comment gagner du temps à cette étape.
Nous allons utiliser une fonctionnalité qui est proposée par l’indispensable commande console n98-Magerun2 , que vous pouvez télécharger ici : https://github.com/netz98/n98-magerun2
La commande qui nous intéresse est dev:console .
Celle-ci permets d’exécuter du code php directement dans la console, et utilise https://psysh.org/ en technologie.
Voici comment faire pour lancer directement votre data patch via ce biais
On se rends dans la console
php n98-magerun2.phar dev:console |
Dans la console :
On va charger la classe de notre dataPatch, puis on va appliquer la méthode apply
Par exemple :
$patch = $di->create(\Vendor\Module\Setup\Patch\Data\DataPatchModule::class); $patch->apply() |
Via ce biais plus besoin de perdre du temps à attendre l’éxécution de la commande bin/magento stup:upgrade 🙂