Magento2:フロントエンドまたはバックエンドであることを確認しますか?


回答:


22

続きを読む:blog.mageprince.com

objectManagerを使用

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

依存性注入あり

protected $_state;

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

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

注:magento2のコーディング標準に従って、オブジェクトマネージャインスタンスをファイルで直接使用しないでください


1
依存性の注入のための1
PЯINCƏ

+1 @PЯINCƏMagentoコーディング標準に従って、構成メソッドで完全なクラス名を使用しないでください。useステートメントを使用して完全なクラスを宣言し、クラス名のみをconstruct()メソッドに宣言します。
Rakesh Jesadiya

1
:@RakeshJesadiya Imはあなたに同意していない、この質問を参照してくださいmagento.stackexchange.com/questions/106096/...
PЯINCƏ

6

人々はすでに質問に答えました。私はそれをより良くしているだけです。

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、管理者側でのみメンテナンスモードを有効にできますか?
jafar pinjar

いいえ、そのオプションは利用できません。
Dinesh Yadav

3

以下のコードを使用

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

2

以下のコードを試して、管理エリアにいるかどうかを確認してください

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());
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.