Перенаправлення на 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);
Маріус

Не звертай уваги. Додавання ->sendResponse()наприкінці зробили роботу!
MrUpsidown

@MrUpsidown. Вибачте. Я забув проsendResponse
Маріус

2

Кращий спосіб зробити це так.

Mage_Core_Controller_Varien_Action :: _ перенаправлення ('urlpost / index / response', масив ('_ 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());

І так далі...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.