Sorgu dizesiyle URL'ye yönlendir


11

Modülümde, komut dosyam yürütüldükten sonra, URL'de sorgu dizesi içeren bir sayfaya yönlendirme yapmam gerekiyor.

İşte ne var:

$redirectUrl = 'http://magento.local/en_en/shop/index';
$redirectArgs = array('test' => '1');
$this->_redirect($redirectUrl, $redirectArgs);

Ayrıca denedim:

Mage::app()->getFrontController()->getResponse()->setRedirect($redirectUrl, $redirectArgs)->sendResponse();

Her iki yöntem de hata veriyor: İsteğiniz işleme koyulurken bir hata oluştu

Beklediğim şey yönlendirilmek http://magento.local/en_en/shop/index?test=1

Bunu nasıl başarabileceğimi bilen var mı?

Düzenle:

Önerildiği gibi, denedim:

$redirectUrl = 'http://magento.local/en_en/shop/index?test=1';
Mage::app()->getResponse()->setRedirect($redirectUrl);

Hata yok, ama hiçbir şey olmuyor. Kontrolörde değilim.

Düzenleme 2:

Ben kullanarak sona erdi:

$redirectUrl = 'http://magento.local/en_en/shop/index?test=1';
Mage::app()->getResponse()->setRedirect($redirectUrl)->sendResponse();

Bu beklendiği gibi çalışıyor! Teşekkür ederim.

Yanıtlar:


9

Neden sadece URL'yi bu şekilde oluşturmuyorsunuz?

 $redirectUrl = 'http://magento.local/en_en/shop/index?test=1';

ikinci parametresi setRedirectyönlendirme kodu içindir (301, 302).

URL'yi dahili olarak oluşturmak istiyorsanız bunu deneyebilirsiniz:

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

Ve sonra? $this->_redirect($redirectUrl);?
MrUpsidown

@MrUpsidown. _redirectBir denetleyicide iseniz. Başka bir Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius

Boşver. ->sendResponse()Sonunda eklemek iş yaptı!
MrUpsidown

@MrUpsidown. Afedersiniz. Ben unuttumsendResponse
Marius

2

Bunu yapmanın en iyi yolu böyle.

Mage_Core_Controller_Varien_Action :: _ redirect ('urlpost / dizin / yanıt', dizi ('_ secure' => true, '_ query' => 'string1 = 417'));

0

Sorgu parametreleriyle başka bir URL'ye yönlendirmek istiyorsanız, bunu şu şekilde yapabilirsiniz:

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

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

Bu sizi şu adrese yönlendirecektir: http: //magento.local/en_en/shop/index? Test = 1 & test = 2


0

Google'dan buraya geldiyseniz, bir denetleyici kullanıyorsanız ve kullanabileceğiniz bağımsız değişkenleri koruyarak başka birine yönlendirmek istiyorsanız:

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

Nerede module, controllerve actionile değiştirilebilir *'s değerinin korunması için. Aynı denetleyicideki başka bir işlem:

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

Aynı işlem adı, kardeş denetleyicisi:

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

Ve bunun gibi...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.