Перенаправить на 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();

Это работает как ожидалось! Спасибо.

MrUpsidown
источник

Ответы:

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 :: _ redirect ('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

Willster
источник
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());

И так далее...

искра
источник