Magento2: ¿Verifica si es frontend o backend?

Respuestas:

22

Leer más: blog.mageprince.com

Con objectManager

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

Con inyección de dependencia

protected $_state;

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

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

Nota: Según los estándares de codificación magento2, no use la instancia del administrador de objetos directamente en los archivos

Príncipe Patel
fuente
1
+1 para la inyección de dependencia
PЯINCƏ
+1 @ PЯINCƏ Según el estándar de codificación Magento, no utilice el nombre completo de la clase en el método de construcción. Declare la clase completa usando la instrucción use y declare solo el nombre de la clase para el método construct ().
Rakesh Jesadiya
1
@RakeshJesadiya No estoy de acuerdo con usted, consulte esta pregunta: magento.stackexchange.com/questions/106096/…
PЯINCƏ
6

La gente ya ha respondido la pregunta. Solo lo estoy haciendo mejor.

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
fuente
hola @dinesh, ¿podemos habilitar el modo de mantenimiento solo para el lado administrador?
Jafar pinjar
No, esa opción no está disponible.
Dinesh Yadav
3

Use el siguiente código

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

Pruebe el código a continuación para verificar si está en el área de administración

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