1

これは、Magento CE 1.7.0.2 のシナリオです。カタログ検索ページにいて、リスト モードがオンになっている場合。

Url:  http://127.0.0.1/magento/catalogsearch/result/index/?mode=list&q=the

カートに製品を追加した後、現在のページにリダイレクトすると、管理パネルでアクティブになります。

シンプルな商品をカートに追加しようとすると、商品はカートに追加されますが、リダイレクト URL が正しくデコードされません

All ‘&’ replaced by ‘&’ and result in breaking search result...

Result URL: http://127.0.0.1/magento/catalogsearch/result/index/?mode=list&q=the

このバグにはすでに参加している可能性があると思いますが、トピックが見つかりません....

親切にこれを手伝ってください

前もって感謝します

4

2 に答える 2

0

このファイル app\code\core\Mage\Core\Helper\Abstract.php public function escapeUrl($data) では、この関数が変な URL を担当しています。

htmlspecialcharsphp の関数を使用します。こちら&'&'参照してくださいhttp://php.net/manual/en/function.htmlspecialchars.php

だから私がすることは、カスタムリダイレクトメソッドを使用するのでは$this->getResponse()->setRedirect($returnUrl);なく、 CartController メソッドのこの行にコメントすることです。_goBack

于 2013-06-03T12:13:56.550 に答える
0

参照を提供してくれたムファダルに感謝します。これを修正する簡単な方法が 2 つあります。

方法 1:-

このヘルパー app\code\core\Mage\Core\Helper\Abstract.php をオーバーライド/書き換えることができます

以下の機能を変更すると:

public function escapeUrl($data) 
{ 
return htmlspecialchars($data); 
} 

public function escapeUrl($data) 
{ 
return $data; 
} 

方法 2 (最良の方法) :

コントローラーの書き換え/オーバーライド /app/code/core/Mage/Core/Controller/Varien/Action.php

以下の変更された方法で:

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

$refererUrl = Mage::helper(’core’)->escapeUrl($refererUrl);

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

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

//$refererUrl = Mage::helper(’core’)->escapeUrl($refererUrl);

if (!$this->_isUrlInternal($refererUrl)) { 
$refererUrl = Mage::app()->getStore()->getBaseUrl(); 
} 
return $refererUrl; 
} 
于 2013-07-31T05:53:46.267 に答える