dalam konteks apa Anda ingin memeriksa ini? pengontrol? blok?
Marius
Versi Magento 1 kita gunakan function Mage :: getBlockSingleton ('page / html_header') -> getIsHomePage (); saya ingin menampilkan data dengan cara seperti halaman beranda, halaman kategori, halaman produk & halaman cms dll
MagikVishal
1
Saya tahu itu, tetapi untuk menjawab ini saya ingin tahu di mana Anda ingin menggunakan ini di magento2. Tidak ada kelas global mage di m2.
Marius
Jawaban:
20
Anda dapat mencoba ini: Menyuntikkan instance dari \Magento\Framework\App\Request\Httpkonstruktor kelas Anda. Jika Anda berada di controller Anda tidak perlu melakukannya. Anda sudah dapat mengaksesnya seperti ini$request = $this->getRequest()
Maka Anda dapat memeriksa apakah beranda seperti ini:
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 - bagaimana cara saya mengecek yang sama dalam file phtml?
Manashvi Birla
2
tulis metode di blok yang mengembalikan $this->_request->getFullActionName()iklan menggunakannya dalam file phtml.
Marius
Bisakah Anda menguraikan? Bagaimana seseorang melakukan itu?
Maks
@ Max apa lagi elaborasi yang Anda butuhkan? Saya pikir jawabannya jelas? katakan padaku apa yang ingin kau ketahui
Marius
Maaf, saya baca ulang dan jelas. Terima kasih.
Maks
7
Dari dalam file phtml ini berfungsi untuk saya:
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}
Ini berhasil untuk saya. Mengapa tidak menggunakan Object Manager?
TheBlackBenzKid
Ini praktik buruk untuk menggunakan Object Manager secara langsung. Magento Official dev doc mengatakan "Magento melarang penggunaan langsung ObjectManager dalam kode Anda karena menyembunyikan dependensi nyata suatu kelas."
Makwana Ketan
0
Karena pola desain Injeksi Ketergantungan. Anda membuat modul untuk meminta sumber daya sesuai permintaan. Manajer objek menentang paradigma itu. Namun, ini berfungsi dengan baik tetapi seperti menggunakan Mage lagi - lambat.
Jawaban:
Anda dapat mencoba ini: Menyuntikkan instance dari
\Magento\Framework\App\Request\Http
konstruktor kelas Anda. Jika Anda berada di controller Anda tidak perlu melakukannya. Anda sudah dapat mengaksesnya seperti ini$request = $this->getRequest()
Maka Anda dapat memeriksa apakah beranda seperti ini:
sumber
$this->_request->getFullActionName()
iklan menggunakannya dalam file phtml.Dari dalam file phtml ini berfungsi untuk saya:
sumber
Coba yang ini:
sumber
Karena pola desain Injeksi Ketergantungan. Anda membuat modul untuk meminta sumber daya sesuai permintaan. Manajer objek menentang paradigma itu. Namun, ini berfungsi dengan baik tetapi seperti menggunakan Mage lagi - lambat.
sumber
Coba kode di bawah ini:
Menggunakan Object Manager
sumber