Magento2: Überprüfen Sie, ob es sich um Frontend oder Backend handelt?

12

Ich möchte überprüfen, ob es sich um Front- oder Backend handelt.
Wie kann ich das machen?

Ketan Borada
quelle

Antworten:

22

Lesen Sie mehr: blog.mageprince.com

Mit objectManager

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

Mit Abhängigkeitsinjektion

protected $_state;

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

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

Hinweis: Gemäß den Codierungsstandards von magento2 wird die Objektmanagerinstanz nicht direkt in Dateien verwendet

Prinz Patel
quelle
1
+1 für die Abhängigkeitsinjektion
PЯINCƏ
+1 @ PЯINCƏ Verwenden Sie gemäß Magento-Codierungsstandard nicht den vollständigen Klassennamen in der Konstruktionsmethode. Deklarieren Sie die vollständige Klasse mit der use-Anweisung und deklarieren Sie nur den Klassennamen für die Methode construct ().
Rakesh Jesadiya
1
@ RakeshJesadiya Ich bin nicht mit Ihnen einverstanden, bitte sehen Sie diese Frage: magento.stackexchange.com/questions/106096/…
PЯINCƏ
6

Die Leute haben die Frage bereits beantwortet. Ich mache es nur besser.

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
quelle
hi @dinesh, können wir den Wartungsmodus nur für Administratoren aktivieren?
Jafar Pinjar
Nein, diese Option ist nicht verfügbar.
Dinesh Yadav
3

Verwenden Sie den folgenden Code

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

Versuchen Sie den folgenden Code, um zu überprüfen, ob Sie sich im Administrationsbereich befinden

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