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.