我需要从控制器重定向到页面并滚动到特定锚点。我在普通的Magento控制器中使用以下内容
$this->_redirect("shop/boxes#".$mainSku);
假设$mainSku
为123,则在末尾添加一个尾部斜杠,因此我将被重定向到http://example.com/shop/boxes/#123/。尾部斜杠将滚动效果丢失到锚点。
我怎样才能克服(以最干净的方式)?
答案 0 :(得分:1)
这就是诀窍!
$url = Mage::getUrl("shop/boxes#".$mainSku);
$url = substr($url, 0, -1);
$this->getResponse()->setRedirect($url);
希望它对其他人有用。
答案 1 :(得分:1)
如何在getUrl
方法之外添加锚名称?
$url = Mage::getUrl('shop/boxes').'#'.$mainSku;
$this->getResponse()->setRedirect($url);
答案 2 :(得分:0)
我遇到了同样的问题,Marius的答案是最好的解决方案,因为如果您使用参数或者使用添加密钥来解决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;
}