我需要从控制器重定向到页面并滚动到特定的锚点。我在普通的 Magento 控制器中使用以下内容
$this->_redirect("shop/boxes#".$mainSku);
假设$mainSku
是 123,最后添加了一个斜杠,所以我被重定向到http://example.com/shop/boxes/#123/例如。尾部斜杠失去了锚点的滚动效果。
我怎么能克服呢(以最干净的方式)?
我需要从控制器重定向到页面并滚动到特定的锚点。我在普通的 Magento 控制器中使用以下内容
$this->_redirect("shop/boxes#".$mainSku);
假设$mainSku
是 123,最后添加了一个斜杠,所以我被重定向到http://example.com/shop/boxes/#123/例如。尾部斜杠失去了锚点的滚动效果。
我怎么能克服呢(以最干净的方式)?
这成功了!
$url = Mage::getUrl("shop/boxes#".$mainSku);
$url = substr($url, 0, -1);
$this->getResponse()->setRedirect($url);
希望它对其他人有用。
在方法之外添加锚名称getUrl
怎么样?
$url = Mage::getUrl('shop/boxes').'#'.$mainSku;
$this->getResponse()->setRedirect($url);
我遇到了同样的问题,Marius 的答案是最好的解决方案,因为如果您使用参数或启用了向 URL 添加密钥,则来自 Krt_Malta 的解决方案不起作用。
(对不起,马吕斯,不能投票给喷气机。)
我拿了原始$this->_redirect()
代码并对其进行了修改,以便我可以在参数中给它一个锚点。
现在我可以像这样使用它:
$this->_redirectAnhcor('*/*/edit', array('id' => $Id), '#products');
/**
* Set redirect into response with anchor
*
* @param string $path
* @param array $arguments
* @param string $anchor
*/
protected function _redirectAnhcor($path, $arguments = array(), $anchor = '')
{
$this->_getSession()->setIsUrlNotice($this->getFlag('', self::FLAG_IS_URLS_CHECKED));
$this->getResponse()->setRedirect($this->getUrl($path, $arguments) . $anchor);
return $this;
}