w jakim kontekście chcesz to sprawdzić? kontroler? blok?
Marius
W wersji Magento 1 korzystamy z funkcji Mage :: getBlockSingleton ('page / html_header') -> getIsHomePage (); chcę pokazać strony danych, takie jak strona główna, strona kategorii, strona produktu i strona cms itp.
MagikVishal
1
Wiem o tym, ale aby odpowiedzieć na to pytanie, chcę wiedzieć, gdzie chcesz tego użyć w magento2. Nie ma globalnej klasy magów w m2.
Marius
Odpowiedzi:
20
Możesz spróbować: wstrzyknąć wystąpienie do \Magento\Framework\App\Request\Httpkonstruktora klasy. Jeśli jesteś kontrolerem, nie musisz tego robić. Możesz już uzyskać do niego dostęp w ten sposób$request = $this->getRequest()
Następnie możesz sprawdzić, czy strona główna jest taka:
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}
napisz metodę w bloku, która zwraca $this->_request->getFullActionName()reklamę, użyj jej w pliku phtml.
Marius
Czy mógłbyś opracować? Jak to zrobić?
Maks.
@Max, czego jeszcze potrzebujesz? Myślę, że odpowiedź jest jasna? powiedz mi, co chcesz wiedzieć
Marius
Przepraszam, przeczytałem ponownie i jest jasne. Dziękuję Ci.
Max
7
Z wnętrza pliku phtml to działało dla mnie:
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}
To zadziałało dla mnie. Dlaczego nie skorzystać z Menedżera obiektów?
TheBlackBenzKid
Złą praktyką jest bezpośrednie korzystanie z Object Managera. Oficjalny dokument deweloperski Magento mówi: „Magento zabrania bezpośredniego użycia ObjectManager w twoim kodzie, ponieważ ukrywa prawdziwe zależności klasy”.
Makwana Ketan
0
Z powodu wzorca projektowego Dependency Injection. Tworzysz moduł, aby żądać zasobu na żądanie. Menedżer obiektów sprzeciwia się temu paradygmatowi. Działa jednak świetnie, ale przypomina to używanie Maga od nowa - powoli.
Odpowiedzi:
Możesz spróbować: wstrzyknąć wystąpienie do
\Magento\Framework\App\Request\Http
konstruktora klasy. Jeśli jesteś kontrolerem, nie musisz tego robić. Możesz już uzyskać do niego dostęp w ten sposób$request = $this->getRequest()
Następnie możesz sprawdzić, czy strona główna jest taka:
źródło
$this->_request->getFullActionName()
reklamę, użyj jej w pliku phtml.Z wnętrza pliku phtml to działało dla mnie:
źródło
Spróbuj tego:
źródło
Z powodu wzorca projektowego Dependency Injection. Tworzysz moduł, aby żądać zasobu na żądanie. Menedżer obiektów sprzeciwia się temu paradygmatowi. Działa jednak świetnie, ale przypomina to używanie Maga od nowa - powoli.
źródło
Wypróbuj poniższy kod:
Korzystanie z Menedżera obiektów
źródło