Eu acho que você fez no seu controlador pode ser que você deve obter o gerenciador de objetos a ser inicializado usando a classe de contexto no método __construct.
Oi, eu já chamo método de construção no meu arquivo de classe de bloco, verifique o link abaixo para obter mais detalhes codebeautify.org/alleditor/0b796a E obrigado pela ajuda.
Pratik
Esta não deve ser a resposta aceita. Você não deve usar o Objectmanager da maneira descrita.
Seanbreeden
22
Se você precisar do ID da categoria no Magento2, poderá obter os valores usando as seguintes etapas a serem seguidas
1. Inclua o uso Magento\Framework\Registryno seu arquivo de classe.
<?php
/**
* class file
*/namespaceVendor\Module\Model;useMagento\Framework\Registry;...
2.Crie um objeto para isso usando o Gerenciador de objetos ou, se você o estiver usando no controlador, atribua na sua __construct()função como \Magento\Framework\Registry $registry:
Para referência adicional na implementação do Magento2 deste conceito, consulte o arquivo de classe e a função chamada função pública _initCategory(). Nesse método, eles estão registrando a categoria atual.
O texto acima parece correto, mas acho que pular direto para o Registro não é a melhor abordagem. O Magento fornece um resolvedor de camadas que já encapsula essa funcionalidade. (Veja o bloco TopMenu nos plugins do catálogo)
Sugiro injetar a classe \ Magento \ Catalog \ Model \ Layer \ Resolver e usá-la para obter a categoria atual. Aqui está o código:
Respostas:
Eu acho que você fez no seu controlador pode ser que você deve obter o gerenciador de objetos a ser inicializado usando a classe de contexto no método __construct.
fonte
Se você precisar do ID da categoria no Magento2, poderá obter os valores usando as seguintes etapas a serem seguidas
1. Inclua o uso
Magento\Framework\Registry
no seu arquivo de classe.2.Crie um objeto para isso usando o Gerenciador de objetos ou, se você o estiver usando no controlador, atribua na sua
__construct()
função como\Magento\Framework\Registry $registry
:3.Em seguida, você pode simplesmente usá-lo com a classe como:
Para referência adicional na implementação do Magento2 deste conceito, consulte o arquivo de classe e a função chamada função pública
_initCategory()
. Nesse método, eles estão registrando a categoria atual.fonte
Experimente este código. isso definitivamente irá ajudá-lo.
fonte
O texto acima parece correto, mas acho que pular direto para o Registro não é a melhor abordagem. O Magento fornece um resolvedor de camadas que já encapsula essa funcionalidade. (Veja o bloco TopMenu nos plugins do catálogo)
Sugiro injetar a classe \ Magento \ Catalog \ Model \ Layer \ Resolver e usá-la para obter a categoria atual. Aqui está o código:
Aqui está o que o método getCurrentCategory () real faz na classe Resolver.
Como você pode ver, ele ainda usa o registro, mas fornece um fallback no caso de falha.
fonte