Jak przekierować do poprzedniej strony Magento 2?

14

Jak przekierować do poprzedniej strony z mojej niestandardowej akcji w Magento 2

Nowicjusz
źródło

Odpowiedzi:

42

W swoim kontrolerze wpisz następujący kod:

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

Ten kod działa dla mnie i mam nadzieję, że Ci pomoże.

ND17
źródło
Czy musi to być plik xml związany z działaniem w moim module @ ND17
Learing_Coder
@PranayK Najpierw powiedz mi, jaki jest twój problem, jeśli twoje działanie nie wykorzystuje się do renderowania żadnej strony, to nie ma potrzeby dodawania pliku XML
ND17
jeśli przypuśćmy, że przyszedłem na stronę z listą, gdy muszę wrócić, do strony głównej dostaję odsyłacz ma adres strony z listą @ ND17
Learing_Coder
Czy musisz wykonać jakąkolwiek akcję? na przykład kliknij coś?
ND17
tak, mam link Wstecz po kliknięciu, muszę wrócić do strony głównej, pozostanie tylko na liście. @ ND17
Learing_Coder
15

Może to być także poprawna odpowiedź w krótszej formie Magento 2.0.4

przestrzeń nazw Vendorname \ Modulename \ Controller \ Adminhtml \ Index;
klasa Fetch rozszerza \ Magento \ Backend \ App \ Action
{
    funkcja publiczna execute ()
    {
        // TODO: Implementuj metodę execute ().
        $ this -> _ redirect ($ this -> _ redirect-> getRefererUrl ());
    }
}
oliver
źródło
executeOczekuje się, aby zwrócić albo Magento\Framework\Controller\ResultInterfacelub grupę Magento\Framework\App\ResponseInterface. Na szczęście _redirectmetoda wykonuje jedną z nich, więc jest to wskazane:return $this->_redirect($this->_redirect->getRefererUrl());
clockworkgeek
fajne dla backendu. działa świetnie z Magento 2.2.6.
jaydip sinh Parmar
To jest poprawna metoda przekierowania na poprzednią stronę. Dziękuję
Avesh Naik,
2

Proszę użyć tego kodu w klasie kontrolera:

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

Tutaj resultRedirectFactory jest zmienną klasową, którą można dziedziczyć w klasie od rodziców.

Aby sprawdzić, czy ustawiony jest adres URL polecenia, najpierw wydrukuj zmienną $ _SERVER. Ten kod działa dla mnie.

Sumit Verma
źródło
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;
}
Amit Singh
źródło