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ЯINCIN

+1 @ PЯINCƏ 마 젠토 코딩 표준에 따라 생성 메소드에서 전체 클래스 이름을 사용하지 마십시오. use 문을 사용하여 전체 클래스를 선언하고 construct () 메소드에 클래스 이름 만 선언하십시오.
Rakesh Jesadiya

1
@RakeshJesadiya 당신에게 동의하지 않습니다,이 질문을 참조하십시오 : 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.