Tiago Sampaio

main ai engineering career

engineering

2 min read

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.

[php]
/* 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);
[/php]

Exemplos:

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

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

Outra forma de redirecionar fora da classe controller (um model por exemplo):
[php]
$url = "http://example.com";
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
[/php]

Para redirecionar para um caminho com parâmetros:

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

Espero que este post tenha lhe ajudado!

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

Tiago Sampaio

Written by

TS

Tiago Sampaio

Adobe Commerce & Magento 2 Expert

Senior developer with 15+ years building software. Writes practical fixes for Magento 2 and Adobe Commerce, and honest notes on growing as a developer.

$ git remote add inbox

Get new commits by email

New posts from both branches, engineering and career. No spam, unsubscribe any time.

4 responses to “Funções de Redirecionamento do Magento”

$ git notes show

  1. Gostaria de saber como posso fazer o redirecionamento direto no produto.

    Att

    Agcommerce

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

      Abraços,

      Tiago

  2. Andson Lourenço Avatar
    Andson Lourenço

    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?

    1. 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