Categories: Мадженто 2

Magento 2: registry (реестр)

Довольно часто при разработке модуля на Мадженто 2 нужно использовать кратковременную информацию. Например, чтобы записывать промежуточные данные в браузер клиента, мы используем куки (cookies), чтобы сохранять данные в пределах одного запроса — реестр (registry), а чтобы сохранять данные между запросами — сессии (sessions).

Сегодняшняя статья посвящена рассмотрению объектов реестра (registry) в Magento 2. Рассмотрим, что такое реестр (registry) в Magento 2, а также небольшие примеры его использования.

Registry (реестр) в Magento 2

Реестр предназначен для хранения данных, специфичных для этого запроса (а не пользователя, или чего-то еще), в памяти, и эти данные сохраняются только на время данного запроса.

Реестр дает возможность использовать «глобальные переменные» в Magento. Реестр выбрасывает исключение при попытке записать в него данные с уже существующим ключом (или просто игнорирует перезапись).

В Мадженто версий 1.х использовался очень простой принцип: класс Mage создается как singleton (одиночный) объект для каждого запроса, а экземпляр объекта Mage остается в памяти и доступен во всех классах (и шаблонах) до тех пор, пока запрос не завершится и не будет отправлен ответ.

Поскольку объект является singleton (одиночкой), всякий раз, когда вы обращаетесь к нему, вы получаете один и тот же объект. Вы сохраняете значения для этого объекта, поэтому, когда один класс сохраняет значение, а другой обращается к нему, они оба работают над одним и тем же объектом.

В Magento 1 мы использовали для работы Mage::register() и Mage::registry(). Но в платформе Magento2 были внесены изменения в эту реализацию. В новой версии платформы нам нужно использовать класс \Magento\Framework\Registry, который принимает настройки и реестр данных, и который мы можем включать в любой конструктор.

Пример включения реестра в конструктор:

namespace SebWeo\Hello\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
  protected $_registry;
  public function __construct(
    …,
    \Magento\Framework\Registry $registry
  ) {
     $this->_registry = $registry;
     …
 }
 …

}

Пример установки и получения собственной переменной в реестре:

…
/* Установка пользовательской переменной для использования в реестре */public function setCustomVariable()
{
  $this->_registry->register('some_var', 'Значение переменной');
}

/*
* Получение пользовательской переменной из реестра
* @return string
*/public function getCustomVariable()
{
  return $this->_registry->registry('some_var');
}
…

Чтобы получить доступ к переменной, используется следующий формат кода:

$this->_registry->registry('some_var');

Как извлекать глобальные объекты реестра Magento 2

Используя пример из предыдущего раздела, мы можем установить переменную в реестре в контроллере, блоке и получить доступ к ней в любом месте, например, помощнике (helper), блоке, модели и т.д., но только в том же запросе.

Важно. Если мы будем обращаться к реестру из класса, нам нужно будет снова включать класс \Magento\Framework\Registry в конструктор этого класса.

Подобным образом мы можем извлекать глобальные объекты реестра Magento 2, такие как текущий товар, категория, CMS страница, CMS блок и т.д. Вам просто нужно следовать нижеприведенному фрагменту кода, чтобы работать с объектами реестра в Magento 2:

…
/**
* @return \Magento\Catalog\Model\Product
*/public function getProduct()
{
  return $this->_registry->registry('current_product');
}

/**
* @return \Magento\Catalog\Model\Category
*/public function getCurrentCategory()
{
  return $this->_registry->registry('current_category');
}
…

Надеемся, что с помощью сегодняшней статьи вы узнали больше о реестре в Magento 2. Если вам есть, что сказать по данной теме, не стесняйтесь сделать это в разделе комментирования ниже.

Tags: Magento2

Recent Posts

Сравнение маркетинга и нейромаркетинга – преимущества и недостатки

Нейромаркетинг - новая наука, которая ломает стандарты традиционных маркетинговых исследований и предлагает совершенно удивительные способы… Read More

10/10/2020

Что такое хостинг и как его правильно выбрать для своего сайта, чтобы не потерять деньги на простоях

На хостинге живут сайты, это их место в интернете. Если простыми словами, то хостинг представляет… Read More

07/10/2020

Признаки качественного хостинга: выбираем с умом

Хостингом называется специальное пространство, предназначенное для хранения файлов веб-сайта. Клиентам доступны разные типы размещения и… Read More

30/09/2020

Как выучить немецкий язык легко и весело? С помощью Beste Freunde!

Немецкий часто считается сложным языком. Да, немецкая лексика имеет «тяжелый» характер. Да, есть действительно очень… Read More

27/09/2020

Отопление и горячая вода – когда нужно, а не когда соизволят включить

Тепло в доме и горячая вода в любое время для многих жителей многоквартирных и частных… Read More

19/09/2020

Инструкция по скачиванию видео с сервиса TikTok (бесплатно и без watermark)

Если вы еще не слышали о TikTok, тогда рекомендуем вам сначала ознакомиться с этим кратким… Read More

17/09/2020