クエリ文字列で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();

これは期待どおりに動作します!ありがとうございました。

回答:


9

なぜこのようにURLを作成しないのですか?

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

の2番目のパラメータ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 2014

@MrUpsidown。ごめんなさい。忘れていたsendResponse
マリウス

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

どこでmodulecontrollerその値を保持actionするために置き換えることができ*ます。同じコントローラーの別のアクション:

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

同じアクション名、兄弟コントローラー:

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

等々...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.