Я думаю, что вы сделали в своем контроллере, может быть, вы должны получить инициализацию менеджера объектов, используя контекстный класс в методе __construct.
Привет, я уже вызываю метод конструкции в моем файле классов блоков, пожалуйста, проверьте ниже ссылку для более подробной информации codebeautify.org/alleditor/0b796a И спасибо за помощь.
Пратик
Это не должно быть принятым ответом. Вы не должны использовать Objectmanager, как описано выше.
Seanbreeden
22
Если вам нужен идентификатор категории в Magento2, вы можете получить значения, выполнив следующие шаги
1. Включите использование Magento\Framework\Registryв вашем файле класса.
<?php
/**
* class file
*/namespaceVendor\Module\Model;useMagento\Framework\Registry;...
2. Создайте объект для этого с помощью диспетчера объектов или, если вы используете его в контроллере, назначьте в вашей __construct()функции \Magento\Framework\Registry $registry:
Для дальнейшего использования в Magento2 Реализация этой концепции приведена в файле класса и функции, называемой public function _initCategory(). В этом методе они регистрируют текущую категорию.
Вышеуказанное кажется правильным, но я думаю, что прыгать прямо в Реестр - не лучший подход. Magento предоставляет Resolver Layer, который уже инкапсулирует эту функциональность. (Смотрите блок TopMenu в каталоге плагинов)
Я предлагаю ввести класс \ Magento \ Catalog \ Model \ Layer \ Resolver и использовать его для получения текущей категории. Вот код:
Ответы:
Я думаю, что вы сделали в своем контроллере, может быть, вы должны получить инициализацию менеджера объектов, используя контекстный класс в методе __construct.
источник
Если вам нужен идентификатор категории в Magento2, вы можете получить значения, выполнив следующие шаги
1. Включите использование
Magento\Framework\Registry
в вашем файле класса.2. Создайте объект для этого с помощью диспетчера объектов или, если вы используете его в контроллере, назначьте в вашей
__construct()
функции\Magento\Framework\Registry $registry
:3. Затем вы можете просто использовать его с классом как:
Для дальнейшего использования в Magento2 Реализация этой концепции приведена в файле класса и функции, называемой public function
_initCategory()
. В этом методе они регистрируют текущую категорию.источник
Попробуйте этот код. это определенно поможет вам.
источник
Вышеуказанное кажется правильным, но я думаю, что прыгать прямо в Реестр - не лучший подход. Magento предоставляет Resolver Layer, который уже инкапсулирует эту функциональность. (Смотрите блок TopMenu в каталоге плагинов)
Я предлагаю ввести класс \ Magento \ Catalog \ Model \ Layer \ Resolver и использовать его для получения текущей категории. Вот код:
Вот что делает метод getCurrentCategory () в классе Resolver.
Как вы можете видеть, он по-прежнему использует реестр, но он обеспечивает запасной вариант в случае сбоя.
источник