Funções de Redirecionamento do Magento

Para você que sempre quis saber mais sobre as funções de redirecionamento do Magento, criei este post para apresentar os métodos de redirecionamento do Magento.
Primeiramente todos os métodos referentes á redirecionamento estão presentes na class Mage_Core_Controller_Varien_Action, portanto estes métodos devem ser chamados diretamente dentro dos controllers.

/* Redireciona para uma URL definida */
$this->_redirectUrl($url);

/* Redireciona para um caminho específico
 * Neste caso é o path é quebrado em 3 partes: módulo, controller e action.
 * Por exemplo: 'customer/account/login', irá direcionar para o módulo customer do Magento, procurar pelo controller Account (AccountController.php) e disparar o método login (loginAction()).
 * Para informar que se deseja utilizar um controller do mesmo módulo ou uma action do mesmo controller pode-se utilizar o * (asterisco), portanto supondo que estamos no módulo customer, no controller account e na action login, podemos informar o path '*/*/dashboard'
 *
$this->_redirect('module/controller/action');

/* Redirecionar para a página de sucesso */
$this->_redirectSuccess($defaultUrl);

/* Redirecionar para a página de erro */
$this->_redirectError($defaultUrl);

/* Definir a URL de redirecionamento no response do controller */
$this->_redirectReferer($defaultUrl=null);

/* Identifica a URL através de todos os métodos aceitáveis (HTTP_REFERER, de forma regular ou um parâmetro encodado em base64) */
$this->_getRefererUrl();

/* Verifica uma URL para ser utilizada internament */
$this->_isUrlInternal($url);

Exemplos:

Como foi dito, você deve utilizar estes métodos de redirecionamento dentro de suas classes de controllers, como demonstrado abaixo:

$this->_redirect($path, $arguments=array());
//OR,
$this->_redirectUrl($url);

Outra forma de redirecionar fora da classe controller (um model por exemplo):

$url = "http://example.com";
Mage::app()->getFrontController()->getResponse()->setRedirect($url);

Para redirecionar para um caminho com parâmetros:

Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl($path, $arguments));

Espero que este post tenha lhe ajudado!

Um abraço e até a próxima!

Tiago Sampaio

2 Comments

    • Você pode utilizar o método $this->_redirect(‘catalog/product/view’, array(‘id’ => [10])); dentro do controller.

      Abraços,

      Tiago

Leave A Reply

Navigate