dans quel contexte voulez-vous vérifier cela? manette? bloquer?
Marius
Version Magento 1, nous utilisons la fonction Mage :: getBlockSingleton ('page / html_header') -> getIsHomePage (); Je veux afficher les données page par page comme la page d'accueil, la page de catégorie, la page de produit et la page cms, etc.
MagikVishal
1
Je le sais, mais pour répondre à cela, je veux savoir où voulez-vous l'utiliser dans magento2. Il n'y a pas de classe de mage globale en m2.
Marius
Réponses:
20
Vous pouvez essayer ceci: Injectez une instance de \Magento\Framework\App\Request\Httpdans votre constructeur de classe. Si vous êtes dans un contrôleur, vous n'avez pas besoin de le faire. Vous pouvez déjà y accéder comme ceci$request = $this->getRequest()
Ensuite, vous pouvez vérifier si la page d'accueil comme celle-ci est:
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 - comment vérifier la même chose dans un fichier phtml?
Manashvi Birla
2
écrire une méthode dans le bloc qui retourne $this->_request->getFullActionName()et l'utiliser dans le fichier phtml.
Marius
Pourriez-vous élaborer? Comment fait-on cela?
Max
@Max de quelle élaboration supplémentaire avez-vous besoin? Je pense que la réponse est claire? dites-moi ce que vous voulez savoir
Marius
Désolé, je l'ai relu et c'est clair. Je vous remercie.
Max
7
De l'intérieur du fichier phtml, cela a fonctionné pour moi:
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}
Cela a fonctionné pour moi. Pourquoi ne pas utiliser le gestionnaire d'objets?
TheBlackBenzKid
C'est une mauvaise pratique d'utiliser directement le gestionnaire d'objets. Le document officiel de développement de Magento indique que "Magento interdit l'utilisation directe de l'ObjectManager dans votre code car il cache les vraies dépendances d'une classe."
Makwana Ketan
0
En raison du modèle de conception Injection de dépendance. Vous créez un module pour demander une ressource à la demande. Le gestionnaire d'objets va à l'encontre de ce paradigme. Cependant, cela fonctionne très bien mais c'est comme utiliser à nouveau Mage - lent.
Réponses:
Vous pouvez essayer ceci: Injectez une instance de
\Magento\Framework\App\Request\Http
dans votre constructeur de classe. Si vous êtes dans un contrôleur, vous n'avez pas besoin de le faire. Vous pouvez déjà y accéder comme ceci$request = $this->getRequest()
Ensuite, vous pouvez vérifier si la page d'accueil comme celle-ci est:
la source
$this->_request->getFullActionName()
et l'utiliser dans le fichier phtml.De l'intérieur du fichier phtml, cela a fonctionné pour moi:
la source
Essaye celui-là:
la source
En raison du modèle de conception Injection de dépendance. Vous créez un module pour demander une ressource à la demande. Le gestionnaire d'objets va à l'encontre de ce paradigme. Cependant, cela fonctionne très bien mais c'est comme utiliser à nouveau Mage - lent.
la source
Essayez le code ci-dessous:
Utilisation du gestionnaire d'objets
la source