Cách đáng tin cậy để chuyển hướng đến trang cuối cùng


8

Có một cách đáng tin cậy trong magento để chuyển hướng đến trang cuối cùng.

Tôi có một hình thức nhỏ mà tôi muốn chuyển hướng đến trang trước nếu xảy ra lỗi.

Biểu mẫu nằm trên trang sản phẩm và chuyển hướng đến một trang khác khi hoàn thành thành công. Tuy nhiên, tôi muốn chuyển hướng trở lại trang sản phẩm nếu xảy ra lỗi.

Url hành động của tôi là /my/module/submit

Ngoài ra khi tôi nói đáng tin cậy, tôi có nghĩa là redirectRefererkhông thể dựa vào


1
RedirectReferer có đủ tin cậy để adminhtml của Magento dựa hoàn toàn vào các nút quay lại không?
philwinkle

Câu trả lời:


23

Magento dựa vào $_SERVER['HTTP_REFERER']giá trị cho logic chuyển hướng mà không cần điều kiện; xem 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;
}

Nếu bạn không dựa vào nội dung $_SERVER['HTTP_REFERER'], điều duy nhất bạn có thể làm là lưu trữ URL được truy cập gần đây nhất trong phiêntạo một getter cho giá trị này xử lý trường hợp khi ai đó điều hướng trực tiếp đến trang web .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.