Как перенаправить на предыдущую страницу magento 2?

14

Как перенаправить на предыдущую страницу из моего пользовательского действия в magento 2

Новичок
источник

Ответы:

41

В вашем контроллере напишите следующий код:

namespace Company\Module\Controller\Index;
use Magento\Framework\Controller\ResultFactory; 

class Actionname name extends \Magento\Framework\App\Action\Action
{      
    public function execute()
    {
        $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);

        // Your code

        $resultRedirect->setUrl($this->_redirect->getRefererUrl());
        return $resultRedirect;
    }
}

Этот код работает для меня. Надеюсь, он вам тоже поможет.

ND17
источник
Нужно ли им быть xml-файлом, связанным с действием в моем модуле @ ND17
Learing_Coder
@PranayK Сначала скажите мне, в чем ваша проблема, если ваше действие не использует ни для какого рендера страницы, то нет необходимости добавлять файл XML
ND17
если предположить, что я пришел на страницу списка, когда мне нужно вернуться, на домашнюю страницу я получаю, что refererurl имеет страницу со списком URL @ ND17
Learing_Coder
Когда вам нужно вернуться назад, какое действие вы выполняете? например нажать на что-нибудь?
ND17
да У меня есть ссылка «Назад» при нажатии. Мне нужно вернуться на главную страницу, на которой она находится только в списке. @ ND17
Learing_Coder
15

Это также может быть правильным ответом в более короткой форме Magento 2.0.4

пространство имен Vendorname \ Modulename \ Controller \ Adminhtml \ Index;
класс Fetch extends \ Magento \ Backend \ App \ Action
{
    публичная функция execute ()
    {
        // TODO: реализовать метод execute ().
        $ Это -> _ редирект ($ это -> _ redirect-> getRefererUrl ());
    }
}
Оливер
источник
Ожидается, что executeметод вернет либо a, Magento\Framework\Controller\ResultInterfaceлибо a Magento\Framework\App\ResponseInterface. К счастью, _redirectметод делает одно из тех, так что это целесообразно:return $this->_redirect($this->_redirect->getRefererUrl());
clockworkgeek
круто для бэкэнда. работает отлично с Magento 2.2.6.
Джайдип Синх Пармар
Это правильный метод для перенаправления на предыдущую страницу. Спасибо
Авеш Найк
2

Пожалуйста, используйте этот код в вашем классе контроллера:

$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setRefererUrl();
return $resultRedirect;

Здесь resultRedirectFactory - это переменная класса, которая может наследоваться от вашего родителя в вашем классе.

Чтобы проверить, задан ли реферальный URL, сначала напечатайте переменную $ _SERVER. Этот код работает для меня.

Сумит Верма
источник
0
public function execute(){
    $resultRedirect = $this->resultRedirectFactory->create();
    try{
        $this->messageManager->addSuccess(__('Redirection Sucessful.'));
    }catch (\Exception $e) {
        $this->messageManager->addError($e->getMessage());            
    }
    $resultRedirect->setUrl($this->_redirect->getRefererUrl());
    return $resultRedirect;
}
Амит Сингх
источник