Chuyển hướng đến URL bằng chuỗi truy vấn


11

Trong mô-đun của tôi, sau khi thực thi tập lệnh của mình, tôi cần thực hiện chuyển hướng đến một trang có chuỗi truy vấn trong URL.

Đây là những gì tôi có:

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

Tôi cũng đã thử:

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

Cả hai phương pháp đều đưa ra một lỗi: Đã xảy ra lỗi khi xử lý yêu cầu của bạn

Những gì tôi mong đợi là được chuyển hướng đến http://magento.local/en_en/shop/index?test=1

Có ai biết làm thế nào tôi có thể đạt được điều đó?

Biên tập:

Theo đề xuất, tôi đã thử:

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

Không có lỗi, nhưng không có gì xảy ra. Tôi không ở trong một bộ điều khiển.

Chỉnh sửa 2:

Tôi đã kết thúc bằng cách sử dụng:

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

Điều này hoạt động như mong đợi! Cảm ơn bạn.

Câu trả lời:


9

Tại sao không chỉ xây dựng url như thế này?

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

tham số thứ hai của setRedirectlà cho mã chuyển hướng (301, 302).

Nếu bạn muốn xây dựng url internaly, bạn có thể thử điều này:

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

Và sau đó? $this->_redirect($redirectUrl);?
MrUpsidown

@MrUpsidown. _redirectnếu bạn đang ở trong một bộ điều khiển. Nếu bạn ở một nơi khác:Mage::app()->getResponse()->setRedirect($redirectUrl);
Marius

Đừng bận tâm. Thêm ->sendResponse()vào cuối đã làm công việc!
MrUpsidown 23/07/14

@MrUpsidown. Lấy làm tiếc. Tôi quên mấtsendResponse
Marius

2

Cách tốt hơn để làm điều này là như thế này.

Mage_Core_Controll_Varien_Action :: _ redirect ('urlpost / index / reply', mảng ('_ safe' => true, '_ query' => 'string1 = 417'));

0

Nếu bạn muốn chuyển hướng đến một URL khác với các tham số truy vấn, bạn có thể làm như thế này:

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

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

Điều này sẽ chuyển hướng bạn đến: http: //magento.local/en_en/shop/index? Test = 1 & test = 2


0

Nếu bạn đã kết thúc ở đây từ google, đang sử dụng bộ điều khiển và muốn chuyển hướng đến một đối số khác bảo tồn các đối số bạn có thể sử dụng:

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

Trong trường hợp module, controlleractioncó thể được thay thế bằng *để bảo tồn giá trị của nó. Một hành động khác trong cùng một bộ điều khiển:

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

Cùng tên hành động, anh chị em điều khiển:

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

Và như thế...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.