Magento 2: как перенаправить с контроллера администратора


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

$this->_redirect('*/*/index');

Или в более общем виде:

$this->_redirect('adminhtml/controller/action');

Какой эквивалент в Magento 2?

Author: Raphael at Digital Pianism, 2016-03-18

2 answers

Чтобы выполнить следующее в Magento 2, вы должны выполнить следующее в своем методе execute:

public function execute()
{
    /* Do your controller action stuff here */
    $resultRedirect = $this->resultRedirectFactory->create();
    $resultRedirect->setPath('adminRouteFrontName/controllerFolder/actionClass');
    return $resultRedirect;
}

Вам не нужно добавлять \Magento\Framework\Controller\Result\RedirectFactory в свой конструктор, так как он уже объявлен в абстрактном классе Magento\Framework\App\Action\AbstractAction, поэтому у вас уже есть доступ к переменной $this->resultRedirectFactory.

Параметры в моем примере следующие:

  • Имя интерфейса администратора: объявлено в вашем adminhtml/routes.xml
  • Папка-контроллер: имя папки контроллера под Controller/Adminhtml
  • Класс действий: имя вашего класса действий в папке контроллера, например, с Index.php это будет index, для Grid.php это будет grid и так далее.

Вы также можете по-прежнему использовать *, как мы делали в M1.

Вы также можете использовать параметры, например, такие:

$resultRedirect->setPath('catalog/*/', ['store' => $storeId, '_current' => true, 'id' => $id]);
 4
Author: Raphael at Digital Pianism, 2016-03-18 11:33:15

Я просто хочу добавить, что Ваш вопрос и Ваш ответ работают на меня:). Я искал простой метод перенаправления и случайно обнаружил, что старый метод (из Mage 1) все еще поддерживается в Mage 2, я использовал следующий код для перенаправления с моего пользовательского контроллера на сетку продуктов, и это сработало:)

$this->_redirect('catalog/product/index'); return;

Я не уверен, будет ли это поддерживаться позже или нет, но об этом стоило упомянуть:)

 4
Author: MTM, 2016-12-01 15:57:02