Magento2: Vérifiez qu'il s'agit du frontend ou du backend?

13

Je veux vérifier si c'est avant ou arrière.
Comment puis je faire ça?

Ketan Borada
la source

Réponses:

22

En savoir plus: blog.mageprince.com

Avec objectManager

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

Avec injection de dépendance

protected $_state;

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

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

Remarque: selon les normes de codage de magento2, n'utilisez pas l'instance de gestionnaire d'objets directement dans les fichiers

Prince Patel
la source
1
+1 pour l'injection de dépendance
PЯINCƏ
+1 @ PЯINCƏ Conformément à la norme de codage Magento, n'utilisez pas le nom de classe complet dans la méthode de construction. Déclarez la classe complète à l'aide de l'instruction use et déclarez uniquement le nom de classe à la méthode construct ().
Rakesh Jesadiya
1
@RakeshJesadiya Je ne suis pas d'accord avec vous, veuillez voir cette question: magento.stackexchange.com/questions/106096/…
PЯINCƏ
6

Les gens ont déjà répondu à la question. Je fais juste mieux.

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
la source
salut @dinesh, pouvons-nous activer le mode de maintenance uniquement pour le côté administrateur?
jafar pinjar
Non, cette option n'est pas disponible.
Dinesh Yadav
3

Utilisez le code ci-dessous

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

Essayez le code ci-dessous pour vérifier si vous êtes dans la zone d'administration

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