Question

I want to set value for an already existing registry variable.

E.g. current_category

I need to set some different value for this registry variable. Could someone kindly elaborate how to do it.

Était-ce utile?

La solution

You can try using unregister to unset whats already register and then register your value. If that solves your problem

Autres conseils

Calling Magento\Framework\Registry::register() on an already defined key will throw an exception with the message Registry key "' . $key . '" already exists. You need to unregister the existing key first.

<?php

class MyClass
{
    /**
     * @var \Magento\Framework\Registry
     */
    private $registry;

    /**
     * @param $registry
     */
    public function __construct(\Magento\Framework\Registry $registry)
    {
        $this->registry = $registry;
    }

    /**
     * @param \Magento\Catalog\Api\Data\CategoryInterface $category
     *
     * @return \MyClass
     * @throws \RuntimeException
     */
    public function setCurrentCategory(\Magento\Catalog\Api\Data\CategoryInterface $category): self
    {
        if ($this->registry->registry('current_category')) {
            $this->registry->unregister('current_category');
        }

        $this->registry->register('current_category', $category);

        return $this;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top