Redirect ke URL dengan string kueri

11

Dalam modul saya, setelah eksekusi skrip saya, saya perlu membuat redirect ke halaman dengan string kueri di URL.

Inilah yang saya miliki:

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

Saya juga mencoba:

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

Kedua metode melempar kesalahan: Ada kesalahan saat memproses permintaan Anda

Apa yang saya harapkan akan dialihkan ke http://magento.local/en_en/shop/index?test=1

Adakah yang tahu bagaimana saya bisa mencapainya?

Edit:

Seperti yang disarankan, saya sudah mencoba:

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

Tidak ada kesalahan, tetapi tidak ada yang terjadi. Saya tidak di controller.

Edit 2:

Saya akhirnya menggunakan:

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

Ini berfungsi seperti yang diharapkan! Terima kasih.

MrUpsidown
sumber

Jawaban:

9

Mengapa tidak membangun url seperti ini saja?

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

parameter kedua setRedirectadalah untuk kode redirect (301, 302).

Jika Anda ingin membangun url internaly Anda dapat mencoba ini:

$redirectUrl = Mage::getUrl('module/controller/action', array('_query'=>'test=1'));
Marius
sumber
Lalu? $this->_redirect($redirectUrl);?
MrUpsidown
@ Mr.Upsidown. _redirectjika Anda berada di controller. Jika Anda berada di tempat lain:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius
Sudahlah. Menambahkan ->sendResponse()pada akhirnya berhasil!
MrUpsidown
@ Mr.Upsidown. Maaf. Saya lupa tentangsendResponse
Marius
2

Cara yang lebih baik untuk melakukan ini adalah seperti ini.

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

Jika Anda ingin mengarahkan ulang ke URL lain dengan parameter kueri, Anda dapat melakukannya seperti ini:

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

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

Ini akan mengarahkan Anda ke: http: //magento.local/en_en/shop/index? Test = 1 & test = 2

Willster
sumber
0

Jika Anda berakhir di sini dari google, menggunakan pengontrol dan ingin mengarahkan ke yang lain yang mempertahankan argumen yang dapat Anda gunakan:

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

Di mana module, controllerdan actionbisa diganti dengan *mempertahankan nilainya. Tindakan lain dalam pengontrol yang sama:

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

Nama tindakan yang sama, pengontrol saudara:

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

Dan seterusnya...

Percikan
sumber