カスタム コントローラー経由のリダイレクトを防ぐにはどうすればよいですか?
-
13-12-2019 - |
質問
モジュール コントローラーを呼び出すアクションを持つカスタム フォームがあります。リダイレクトを防ぎ、フォームが送信されたページに留まりたいのですが、コントローラー インデックス アクションにワイルドカードを追加しようとすると、「多すぎる」というメッセージが表示されます。エラーをリダイレクトします'
$this->_redirect('*/*/');
私も試してみました
$this->_redirectReferer();
そして
$this->_redirectReferer('*/*/');
これが私のモジュールコントローラーのインデックスアクションです
public function indexAction()
{
$params = Mage::app()->getRequest()->getPost();
if (isset($params['country'])) {
$this->setCountry((string)$params['country'], isset($params['hide']));
}
if (isset($params['currency'])) {
$this->setCurrency((string)$params['currency']);
}
$this->_redirectReferer();
}
そして以下は私のコントローラーに投稿する私のフォームです
<form method="post" action="<?php echo Mage::getUrl('locale/switch'); ?>">
....
</form>
コントローラーにリダイレクトせずにこのフォームを送信するより良い方法はありますか。
解決
その答えは、Magento を強制的にページ上に留まらせることではありません。
$this->_redirectReferer()
この動作をうまく処理してくれます。問題自体は、一部のページが安全な URL を持っていることが原因でした。これは、フォームが送信されたときに Magento がリダイレクトすることを意味していました。 https
解決策は次のように変更することでした。
<?php echo Mage::getUrl('locale/switch'); ?>
に
<?php echo Mage::getUrl('locale/switch',array('_secure'=>true)); ?>
リダイレクトせずに、安全な URL と安全でない URL を介してフォームを送信できるようになりました。
所属していません magento.stackexchange