Magento2: Verifica che sia frontend o backend?


Risposte:


22

Ulteriori informazioni: 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 iniezione di dipendenza

protected $_state;

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

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

Nota: secondo gli standard di codifica magento2 non utilizzare l'istanza del gestore oggetti direttamente nei file


1
+1 per l'iniezione di dipendenza
PЯINCƏ

+1 @ PЯINCƏ Secondo lo standard di codifica Magento, non utilizzare il nome completo della classe nel metodo di costruzione. Dichiarare la classe completa usando l'istruzione use e dichiarare solo il nome della classe per il metodo construct ().
Rakesh Jesadiya,

1
@RakeshJesadiya Non sono d'accordo con te, consulta questa domanda: magento.stackexchange.com/questions/106096/…
PЯINCƏ

6

Le persone hanno già risposto alla domanda. Lo sto solo migliorando.

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

ciao @dinesh, possiamo abilitare la modalità di manutenzione solo per l'amministrazione?
jafar pinjar,

No, questa opzione non è disponibile.
Dinesh Yadav,

3

Usa sotto il codice

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

2

Prova il codice qui sotto per verificare se ti trovi nell'area di amministrazione

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());
 }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.