쿼리 문자열을 사용하여 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';

의 두 번째 매개 변수는 경로 setRedirect재 지정 코드 (301, 302)입니다.

URL 내부를 빌드하려면 다음을 시도하십시오.

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

그리고? $this->_redirect($redirectUrl);?
MrUpsidown

@MrUpsidown. _redirect당신이 컨트롤러에 있다면. 당신이 다른 곳에 있다면 :Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius

신경 쓰지 마. ->sendResponse()마지막에 추가 하면 작업이 완료되었습니다!
MrUpsidown

@MrUpsidown. 죄송합니다. 나는 잊었다sendResponse
Marius

2

이를 수행하는 더 좋은 방법은 다음과 같습니다.

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

0

쿼리 매개 변수를 사용하여 다른 URL로 리디렉션하려는 경우 다음과 같이 할 수 있습니다.

$redirectUrl = 'http://magento.local/en_en/shop/index';
$query_parameters = array(
                '_query'=> array(
                    'test' => '1',
                    'test'=>'2'
                )
            );

$this->_redirect($redirectUrl, $query_parameters);

http : //magento.local/en_en/shop/index? test = 1 & test = 2로 리디렉션됩니다.


0

Google에서 여기에 온다면 컨트롤러를 사용하고 있으며 사용할 수있는 인수를 보존하는 다른 것으로 리디렉션하려고합니다.

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

어디에서 module, controller그리고 action교체 할 수있는 *그것의 가치를 보존 할 수 있습니다. 동일한 컨트롤러의 다른 작업 :

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

동일한 조치 이름, 형제 제어기 :

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

등등...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.