Magento2: Kiểm tra xem nó là frontend hay backend?


12

Tôi muốn kiểm tra xem nó là phía trước hay phụ trợ.
Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


22

Đọc thêm: blog.mageprince.com

Với objectManager

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

Với tiêm phụ thuộc

protected $_state;

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

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

Lưu ý: Theo tiêu chuẩn mã hóa magento2, không sử dụng trực tiếp trình quản lý đối tượng trong tệp


1
+1 cho tiêm phụ thuộc
PЯINCƏ

+1 @ PЯINCƏ Theo tiêu chuẩn mã hóa Magento, Không sử dụng tên lớp đầy đủ trong phương thức xây dựng. Khai báo toàn bộ lớp bằng cách sử dụng câu lệnh use và chỉ khai báo tên lớp để xây dựng phương thức ().
Rakesh Jesadiya

1
@RakeshJesadiya Tôi không đồng ý với bạn, vui lòng xem câu hỏi này: magento.stackexchange.com/questions/106096/ Kẻ
PЯINCƏ

6

Mọi người đã trả lời câu hỏi rồi. Tôi chỉ làm cho nó tốt hơn.

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

hi @dinesh, chúng tôi có thể kích hoạt chế độ bảo trì chỉ cho phía quản trị viên không?
jafar pinjar

Không, tùy chọn đó không có sẵn.
Dinesh Yadav

3

Sử dụng mã dưới đây

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

2

Hãy thử mã dưới đây để kiểm tra nếu bạn đang ở trong khu vực quản trị

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());
 }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.