사용자 정의 컨트롤러를 통한 리디렉션을 어떻게 방지할 수 있나요?
-
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을 통해 양식을 제출할 수 있습니다.
제휴하지 않습니다 magento.stackexchange