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

4 Comments

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

      Abraços,

      Tiago

  1. Andson Lourenço Reply

    Olá, tenho um site onde gostaria que quando clicasse na img do produto ele foce enviado para o link da loja desse produto.

    Os produtos são recebidos via xml e cadastrados automaticamente, queria que quando alguém quiser clicar no produto ele ir para o site do fornecedor e não para a pagina de produtos.

    Alguma ideia de como isso pode ser feito?

    • Olá Anderson,

      A solução neste caso é bem simples, pode ser feito por um desenvolvedor frontend. Você deve:

      • Criar o atributo com o link externo, caso não exista.
      • Mapear todos os arquivos de listagem de produtos disponíveis na sua instalação Magento.
      • Editar os arquivos de listagem de produtos para substituir o link dá página de produto original pelo link externo.

      Abraços,

      – Tiago

Leave A Reply

Navigate