Formation Magento 2 : Chapitre 8 – Partie D

Les registres sont apparus sous Magento 1 et permettent de déclarer une variable du type « globale », c’est à dire, accessible n’importe où.

Pour faire simple, je peux déclarer mon registre dans un contrôleur et y accéder depuis mes vues ou autres classes.

Contrairement aux sessions, les variables de registre ne sont accessibles que pendant le chargement de la page. Alors qu’une session est enregistrée et a une durée de vie dans le temps.

Créer une variable de registre

Nous allons passer par un contrôleur pour l’enregistrer :

app/code/Maxime/Jobs/Controller/Job/Testregistry.php

Mettez-y ce contenu :

<?php
namespace Maxime\Jobs\Controller\Job;

class Testregistry extends \Magento\Framework\App\Action\Action
{
    /**
     * Registry
     *
     * @var \Magento\Framework\Registry
     */
    protected $_registry;

    /**
     * @param \Magento\Framework\App\Action\Context $context
     * @param \Magento\Framework\Registry $registry
     */
    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\Registry $registry
    )
    {
        parent::__construct($context);
        $this->_registry = $registry;
    }

    public function execute()
    {
        $this->_registry->register('my_registry_var', 'my global value');

        echo $this->_registry->registry('my_registry_var');
    }
}

Ici nous enregistrons et nous récupérons directement la variable du registre.
Vous vous doutez bien qu’ici cet exemple n’a aucun intérêt, mais sachez que vous pouvez injecter le registre dans la classe de votre choix, puis récupérer une variable enregistrée n’importe où.

La méthode prend un 3è paramètre qui permet de ne pas lancer d’erreur si la variable est déjà enregistrée. En effet, si une variable a déjà été settée via le register, il n’est pas possible de l’écraser. Il faut la supprimer, puis la réenregistrer. Si le paramètre gracefull est à « true », aucune erreur ne sera renvoyée mais la valeur ne sera pas écrasée. Pour cela, vous pouvez consulter la classe lib/internal/Magento/Framework/Registry.php, qui contient la méthode « register »

Récupérer une valeur de registre

Comme vous avez pu le constater, dans notre code, nous utilisons cette ligne pour récupérer la valeur de registre :

<?php 
 $this->_registry->registry('my_registry_var');

Si vous vous rendez sur votre site à l’URL http://magento2.lan/jobs/job/testregistry
Vous verrez la valeur de la variable que l’on a enregistré.

N’hésitez pas à faire d’autres tests, comme par exemple définir un block et récupérer la variable de registre dans ce block 🙂

La suite est en cours de rédaction, revenez vite 🙂
Revenir à la partie précédente
Les registres et Magento 2
Share on FacebookTweet about this on TwitterShare on Google+Email this to someone
Taggé sur :        

2 thoughts on “Les registres et Magento 2

  • 20/09/2016 à 09:26
    Permalink

    Je viens de terminer la formation et elle est vraiment parfaite!!! Merci beaucoup!

    Répondre
  • 25/10/2016 à 16:42
    Permalink

    Merci beaucoup Maxime pour ce superbe tuto bien complet et qui n’a rien à envier à OpenClassRooms.
    Je me suis lancé dans le développement Magento 2 pour un client et grâce à vous je vais pouvoir mener mon projet à bien.

    Bref, votre de formation est de loin la meilleure sur M2 disponible sur le net et surtout elle est en Français !

    Bien à vous, très cordialement.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous utilisons des cookies afin de nous assurer de vous proposer la meilleure expérience sur ce site.
Ok