Aller au contenu principal

Magento 2 & Magento 1 : les snippets du quotidien

Magento 2 & Magento 1 : les snippets du quotidien

Nous continuons notre série de comparatifs techniques entre Magento 1 et Magento 2. Le second article de cette série s’apparente plutôt à une « cheat sheet » de « snippets » utilisés quotidiennement.

Ceci est d’abord utile aux développeurs expérimentés sur M1 qui adoptent M2 et cherchent quelques repères.

Mais la communauté des technicien•ne•s M2 grandissant, cette checklist leur servira lors d’interventions sur des sites M1 plus anciens !

Templates

Traduire du texte

Dans M2, la fonction de traduction __() est dans /app/functions.php

Appeler une méthode du block

Pour une meilleure compréhension de la différente entre $block et $this dans M2, lire ceci.

Retrouver un URL

La méthode pour M2 est définie dans \Magento\Framework\View\Element\AbstractBlock::getUrl. De pous, l’usage de * dans l’URi est toujours possible.

Retrouver une ressource (ex : une image)

Dans M2, la racine de images/some_image.jpg est /pub/static/[AREA]/[PACKAGE]/[THEME]/[LANG] .

Formatter en devise

Blocks, Models, Resource Models, …

Appliquer un template

Dans M2, la racine utilisée est le dossier view/[AREA]/templates de My_Module ; toutes surcharges faites par les thèmes prises en compte.

L’interpolation de directives

Exemple complet pour Magento 2 ici

Savoir si la date courante du store est dans un intervalle donné

Rendre une chaîne de caractères « URL friendly »

Retrouver la valeur d’une configuration système

Attention! M2 retourne la valeur du scope « global ». Pour avoir la valeur du scope « store », il faut passer \Magento\Store\Model\ScopeInterface::SCOPE_STORE à l’argument $scopeType

Encoder / décoder le JSON

Oui, dans M2, on préférera utiliser les fonctions natives de PHP pour le JSON

Retrouver le store courant

Ajouter des messages à la session

Attention! Plusieurs méthodes sont dépréciées sur M2. Utiliser en priorité : addSuccessMessage, addErrorMessage, addWarningMessage, addNoticeMessage

Charger une instance depuis la BDD

Dans M2, il reste préférable d’utiliser les Service Contracts (API) mais l’objet de ce billet est de montrer les différences « côte-à-côte » entre M1 et M2.

Retrouver un singleton

Dans M2, il reste préférable d’utiliser les Service Contracts (API) mais l’objet de ce billet est de montrer les différences « côte-à-côte » entre M1 et M2.

Retrouver la connection à la BDD

Comparé à M1, M2 interdit aux classes extérieure de choisir la connexion à utiliser. Celle-ci est désormais intimement liée à la resource. Analyser le traitement de $connectionName dans \Magento\Framework\Model\ResourceModel\Db\AbstractDb::getConnection.

Les Helper

S’il reste nécessaire d’utiliser des helpers, utiliser l’object manager: Injecter l’object manager (\Magento\Framework\ObjectManager\ObjectManager) et utiliser uniquement sa méthode get. Exemple: $this->objectManager->get(\My\Module\\Helper\Data::class)->setData(['key' => 'value'])

Les migrations de BDD

Les constantes de configuration des tables MySql

Pour utilisation dans les classes de schema et data setup / upgrade

Les migrations récurrentes

Sophie Bertrand - Directrice commerciale Kaliop Digital Commerce