質問

モジュール コントローラーを呼び出すアクションを持つカスタム フォームがあります。リダイレクトを防ぎ、フォームが送信されたページに留まりたいのですが、コントローラー インデックス アクションにワイルドカードを追加しようとすると、「多すぎる」というメッセージが表示されます。エラーをリダイレクトします'

$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 を介してフォームを送信できるようになりました。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top