Magento2: Перевірте, чи це передній або резервний?


Відповіді:


22

Детальніше: blog.mageprince.com

З objectManager

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

З ін'єкцією в залежність

protected $_state;

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

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

Примітка: Відповідно до стандартів кодування magento2 не використовуйте екземпляр диспетчера об'єктів безпосередньо у файлах


1
+1 для ін'єкції в залежність
PЯINCƏ

+1 @ PЯINCƏ Відповідно до стандарту кодування Magento, не використовуйте повне ім'я класу в методі конструювання. Оголосити повний клас за допомогою оператора use та оголосити лише ім'я класу для методу construct ().
Ракеш Єсадія

1
@RakeshJesadiya Я не згоден з вами, дивіться це питання: magento.stackexchange.com/questions/106096/…
PЯINCЯ

6

Люди вже відповіли на питання. Я просто роблю це краще.

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, чи можна включити режим обслуговування лише для адміністратора?
jafar pinjar

Ні, ця опція недоступна.
Дінеш Ядав

3

Використовуйте код нижче

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

2

Спробуйте вказати код нижче, щоб перевірити, чи перебуваєте ви в адміністраторській області

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();
}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.