Текущий макет страницы обрабатывает Magento2


В Magento 1 я мог бы получить текущий дескриптор макета страницы следующим образом

$handle = Mage::app()->getFrontController()->getAction()->getFullActionName();

Это будет возвращено, например, для страницы продукта catalog_product_view или cms_index_index для домашней страницы.

Как я могу сделать то же самое в Magento 2?

Мне нужно получить дескриптор страницы изнутри наблюдателя. Что я должен ввести в конструктор, чтобы иметь к нему доступ?

Author: Marius, 2015-01-09

2 answers

Я полагаю, что вам нужно будет ввести

\Magento\Framework\App\Request\Http в constructor, а затем выполните:

$handle = $this->_request->getFullActionName();

Проверил это в Magento\Catalog\Model\Observer - addCatalogToTopmenuItems() как показано ниже, и это сделало свое дело:

public function __construct(
    ...
    \Magento\Framework\App\Request\Http $request
) {
    ...
    $this->_request = $request;
}

public function addCatalogToTopmenuItems(\Magento\Framework\Event\Observer $observer)
{
    $handle = $this->_request->getFullActionName();
    ....
}

Это один из первых случаев, когда я играю с Magento2, возможно, это совершенно неправильный способ сделать это!

 14
Author: James Anelay - TheExtensionLab, 2016-12-22 13:49:37

Вам нужно просто добавить строку ниже для файла представления шаблона и файла блокировки, чтобы получить текущее имя действия страницы.

Это приятно работать с любым файлом шаблона и файлом блока,

echo $this->getRequest()->getFullActionName();

На выходе будет указано текущее имя страницы действия.

Для страницы продукта, catalog_product_view , для страницы категории catalog_category_view

 2
Author: Rakesh Jesadiya, 2016-10-28 07:26:04