Magento2: Verifique se é front-end ou back-end?

12

Quero verificar se é front-end ou back-end.
Como eu posso fazer isso?

Ketan Borada
fonte

Respostas:

22

Leia mais: blog.mageprince.com

Com objectManager

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

Com injeção de dependência

protected $_state;

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

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

Nota: Conforme os padrões de codificação magento2, não use a instância do gerenciador de objetos diretamente nos arquivos

Prince Patel
fonte
1
+1 para a injeção de dependência
PЯINCƏ
+1 @ PЯINCƏ Conforme o padrão de codificação Magento, não use o nome completo da classe no método de construção. Declare a classe completa usando a instrução use e declare apenas o nome da classe para o método construct ().
Rakesh Jesadiya
1
@RakeshJesadiya Não estou de acordo com você, consulte esta pergunta: magento.stackexchange.com/questions/106096/…
PЯINCƏ
6

As pessoas já responderam à pergunta. Estou apenas melhorando.

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
fonte
oi @dinesh, podemos ativar o modo de manutenção apenas para o lado do administrador?
jafar pinjar 24/03
Não, essa opção não está disponível.
Dinesh Yadav
3

Use o código abaixo

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

Tente o código abaixo para verificar se você está na área de administração

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
fonte
0
 public function isAdmin(){
      return ('adminhtml' == $this->_state->getAreaCode());
 }
UUDotCom
fonte