Magento2: Проверьте, это интерфейс или бэкэнд?

13

Я хочу проверить, является ли он передним или задним.
Как я могу это сделать?

Кетан Борада
источник

Ответы:

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, мы можем включить режим сопровождения только для стороны администратора?
Джафар Пинджар
Нет, эта опция недоступна.
Динеш Ядав
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();
}
Ву Тран Кин
источник
0
 public function isAdmin(){
      return ('adminhtml' == $this->_state->getAreaCode());
 }
UUDotCom
источник