使用查询字符串重定向到URL


11

在我的模块中,执行脚本后,我需要重定向到URL中带有查询字符串的页面。

这是我所拥有的:

$redirectUrl = 'http://magento.local/en_en/shop/index';
$redirectArgs = array('test' => '1');
$this->_redirect($redirectUrl, $redirectArgs);

我也尝试过:

Mage::app()->getFrontController()->getResponse()->setRedirect($redirectUrl, $redirectArgs)->sendResponse();

两种方法均会引发错误:处理您的请求时出错

我期望被重定向到 http://magento.local/en_en/shop/index?test=1

有人知道我能做到吗?

编辑:

按照建议,我尝试过:

$redirectUrl = 'http://magento.local/en_en/shop/index?test=1';
Mage::app()->getResponse()->setRedirect($redirectUrl);

没有错误,但没有任何反应。我不在控制器中。

编辑2:

我最终使用:

$redirectUrl = 'http://magento.local/en_en/shop/index?test=1';
Mage::app()->getResponse()->setRedirect($redirectUrl)->sendResponse();

这按预期工作!谢谢。

Answers:


9

为什么不像这样构建网址?

 $redirectUrl = 'http://magento.local/en_en/shop/index?test=1';

的第二个参数setRedirect用于重定向代码(301、302)。

如果要内部构建url,可以尝试以下操作:

$redirectUrl = Mage::getUrl('module/controller/action', array('_query'=>'test=1'));

然后?$this->_redirect($redirectUrl);
MrUpsidown 2014年

@MrUpsidown。_redirect如果您在控制器中。如果您在其他地方:Mage::app()->getResponse()->setRedirect($redirectUrl);
马吕斯

没关系。最后添加即可->sendResponse()完成工作!
MrUpsidown

@MrUpsidown。抱歉。我忘了sendResponse
Marius

2

更好的方法是这样的。

Mage_Core_Controller_Varien_Action :: _ redirect('urlpost / index / response',array('_ secure'=> true,'_ query'=>'string1 = 417'));


0

如果您从Google来到这里,正在使用一个控制器,并且想要重定向到另一个保留参数的参数,则可以使用:

$this->_redirect('module/controller/action', $this->getRequest()->getParams());

其中modulecontrolleraction可更换的*,以保护它的价值。同一控制器中的另一个动作:

$this->_redirect('*/*/anotherAction', $this->getRequest()->getParams());

动作名称相同,同级控制器:

$this->_redirect('*/sibling/*', $this->getRequest()->getParams());

等等...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.