Jak przekierować do poprzedniej strony Magento 2?


14

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

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.


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

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.


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;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.