em que contexto você deseja verificar isso? controlador? quadra?
Marius
Na versão Magento 1, usamos a função Mage :: getBlockSingleton ('page / html_header') -> getIsHomePage (); eu quero mostrar pagewise dados como homepage, página de categoria, página de produto & página cms etc
MagikVishal
11
Eu sei disso, mas, para responder a isso, quero saber onde você quer usar isso no magento2. Não existe classe de magos global em m2.
Marius
Respostas:
20
Você pode tentar o seguinte: Injete uma instância de \Magento\Framework\App\Request\Httpno seu construtor de classe. Se você estiver em um controlador, não precisará fazê-lo. Você já pode acessá-lo assim$request = $this->getRequest()
Então você pode verificar se é a página inicial como esta:
if($this->_request->getFullActionName()=='cms_index_index'){//you are on the homepage}if($this->_request->getFullActionName()=='catalog_product_view'){//you are on the product page}if($this->_request->getFullActionName()=='catalog_category_view'){//you are on the category page}
@ marius - como faço para verificar o mesmo em um arquivo phtml?
Manashvi Birla
2
escreva um método no bloco que retorna o $this->_request->getFullActionName()anúncio e use-o no arquivo phtml.
Marius
Você poderia elaborar? Como é que alguém faz isso?
Max
@ Max que mais elaboração você precisa? Eu acho que a resposta é clara? me diga o que você quer saber
Marius
Desculpe, eu reli e está claro. Obrigado.
Max
7
De dentro do arquivo phtml, isso funcionou para mim:
if($this->getRequest()->getFullActionName()=='cms_index_index'){//you are on the homepage}if($this->getRequest()->getFullActionName()=='catalog_product_view'){//you are on the product page}if($this->getRequest()->getFullActionName()=='catalog_category_view'){//you are on the category page}
Isso funcionou para mim. Por que não usar o Object Manager?
TheBlackBenzKid
É uma prática recomendada usar o Gerenciador de Objetos diretamente. Magento Official dev doc diz "O Magento proíbe o uso direto do ObjectManager no seu código porque oculta as dependências reais de uma classe."
Makwana Ketan
0
Por causa do padrão de design Injeção de Dependência. Você cria um módulo para solicitar um recurso sob demanda. O gerenciador de objetos está indo contra esse paradigma. No entanto, funciona muito bem, mas é como usar o Mage novamente - devagar.
Respostas:
Você pode tentar o seguinte: Injete uma instância de
\Magento\Framework\App\Request\Http
no seu construtor de classe. Se você estiver em um controlador, não precisará fazê-lo. Você já pode acessá-lo assim$request = $this->getRequest()
Então você pode verificar se é a página inicial como esta:
fonte
$this->_request->getFullActionName()
anúncio e use-o no arquivo phtml.De dentro do arquivo phtml, isso funcionou para mim:
fonte
Tente este:
fonte
Por causa do padrão de design Injeção de Dependência. Você cria um módulo para solicitar um recurso sob demanda. O gerenciador de objetos está indo contra esse paradigma. No entanto, funciona muito bem, mas é como usar o Mage novamente - devagar.
fonte
Experimente o código abaixo:
Usando o Gerenciador de Objetos
fonte