Cara andal untuk mengarahkan ke halaman terakhir

8

Apakah ada cara yang dapat diandalkan di Magento untuk mengarahkan ke halaman terakhir.

Saya memiliki formulir kecil yang ingin saya alihkan ke halaman sebelumnya jika terjadi kesalahan.

Formulir duduk di halaman produk dan mengalihkan ke halaman lain ketika selesai dengan sukses. Namun, saya ingin mengarahkan kembali ke halaman produk jika terjadi kesalahan.

URL tindakan saya adalah /my/module/submit

Juga ketika saya mengatakan dapat diandalkan, maksud saya redirectReferertidak bisa diandalkan

Marty Wallace
sumber
1
RedirectReferer cukup dapat diandalkan untuk AdminTml Magento untuk mengandalkan cukup eksklusif untuk tombol kembali?
philwinkle

Jawaban:

23

Magento mengandalkan $_SERVER['HTTP_REFERER']nilai untuk logika pengalihan tanpa keraguan; lihat Mage_Core_Controller_Varien_Action:

/**
 * Set referer url for redirect in responce
 *
 * @param   string $defaultUrl
 * @return  Mage_Core_Controller_Varien_Action
 */
protected function _redirectReferer($defaultUrl=null)
{

    $refererUrl = $this->_getRefererUrl();
    if (empty($refererUrl)) {
        $refererUrl = empty($defaultUrl) ? Mage::getBaseUrl() : $defaultUrl;
    }

    $this->getResponse()->setRedirect($refererUrl);
    return $this;
}

/**
 * Identify referer url via all accepted methods (HTTP_REFERER, regular or base64-encoded request param)
 *
 * @return string
 */
protected function _getRefererUrl()
{
    $refererUrl = $this->getRequest()->getServer('HTTP_REFERER');
    if ($url = $this->getRequest()->getParam(self::PARAM_NAME_REFERER_URL)) {
        $refererUrl = $url;
    }
    if ($url = $this->getRequest()->getParam(self::PARAM_NAME_BASE64_URL)) {
        $refererUrl = Mage::helper('core')->urlDecode($url);
    }
    if ($url = $this->getRequest()->getParam(self::PARAM_NAME_URL_ENCODED)) {
        $refererUrl = Mage::helper('core')->urlDecode($url);
    }

    if (!$this->_isUrlInternal($refererUrl)) {
        $refererUrl = Mage::app()->getStore()->getBaseUrl();
    }
    return $refererUrl;
}

Jika Anda tidak puas bergantung pada $_SERVER['HTTP_REFERER'], satu-satunya hal yang dapat Anda lakukan adalah menyimpan URL yang paling baru-baru ini dikunjungi di sesi dan membuat pengambil untuk nilai ini yang menangani kasus ketika seseorang menavigasi langsung ke situs .

tanda batas
sumber