문제

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.

도움이 되었습니까?

해결책

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

다른 팁

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;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top