0

我需要从控制器重定向到页面并滚动到特定的锚点。我在普通的 Magento 控制器中使用以下内容

$this->_redirect("shop/boxes#".$mainSku);

假设$mainSku是 123,最后添加了一个斜杠,所以我被重定向到http://example.com/shop/boxes/#123/例如。尾部斜杠失去了锚点的滚动效果。

我怎么能克服呢(以最干净的方式)?

4

3 回答 3

1

这成功了!

$url = Mage::getUrl("shop/boxes#".$mainSku);
$url = substr($url, 0, -1);
$this->getResponse()->setRedirect($url);

希望它对其他人有用。

于 2013-10-10T13:59:24.350 回答
1

在方法之外添加锚名称getUrl怎么样?

$url = Mage::getUrl('shop/boxes').'#'.$mainSku;
$this->getResponse()->setRedirect($url);
于 2014-05-19T09:18:59.597 回答
0

我遇到了同样的问题,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;
}
于 2015-01-12T08:13:36.720 回答