Magento2: Periksa apakah itu frontend atau backend?

13

Saya ingin memeriksa apakah itu depan atau belakang.
Bagaimana saya bisa melakukan itu?

Ketan Borada
sumber

Jawaban:

22

Baca Lebih Lanjut: blog.mageprince.com

Dengan objectManager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$state =  $objectManager->get('Magento\Framework\App\State');
echo $state->getAreaCode(); //frontend or adminhtml or webapi_rest

Dengan Injeksi Ketergantungan

protected $_state;

public function __construct (
    \Magento\Framework\App\State $state
) {
    $this->_state = $state;
}

public function getArea()
{
    return $this->_state->getAreaCode();
}

Catatan: Sesuai standar pengkodean magento2 tidak menggunakan instance manajer objek langsung dalam file

Pangeran Patel
sumber
1
+1 untuk injeksi Ketergantungan
PЯINCƏ
+1 @ PЯINCƏ Sesuai standar pengkodean Magento, Jangan gunakan nama kelas penuh dalam metode konstruksi. Deklarasikan kelas penuh menggunakan pernyataan penggunaan dan nyatakan hanya nama kelas untuk membangun () metode.
Rakesh Jesadiya
1
@RakeshJesadiya Saya tidak setuju dengan Anda, silakan lihat pertanyaan ini: magento.stackexchange.com/questions/106096/…
PЯINCƏ
6

Orang sudah menjawab pertanyaan itu. Saya hanya membuatnya lebih baik.

const AREA_CODE = \Magento\Framework\App\Area::AREA_ADMINHTML;

private $_state;

public function __construct (
    \Magento\Framework\App\State $state
) {
    $this->_state = $state;
}

public function isAdmin()
{
    $areaCode = $this->_state->getAreaCode();
    return $areaCode == self::AREA_CODE;
}
Dinesh Yadav
sumber
hai @desh, bisakah kita mengaktifkan mode pemeliharaan hanya untuk sisi admin?
jafar pinjar
Tidak, opsi itu tidak tersedia.
Dinesh Yadav
3

Gunakan kode di bawah ini

$objectmanager = \Magento\Framework\App\ObjectManager::getInstance();
$state =  $objectmanager->get('Magento\Framework\App\State');
if($state->getAreaCode() == 'frontend')
  //frontend
else
  //backend
Ansar Husain
sumber
2

Coba kode di bawah ini untuk memeriksa apakah Anda berada di area admin

function df_is_admin($store = null) {
    /** @var \Magento\Framework\ObjectManagerInterface $om */
    $om = \Magento\Framework\App\ObjectManager::getInstance();
    /** @var \Magento\Framework\App\State $state */
    $state =  $om->get('Magento\Framework\App\State');
    return 'adminhtml' === $state->getAreaCode();
}
Vu Tran Kien
sumber
0
 public function isAdmin(){
      return ('adminhtml' == $this->_state->getAreaCode());
 }
UUDotCom
sumber