Sobrescrevendo Controllers no Magento – O jeito certo

Uma dúvida comum no Magento é sobre a reescrita de controllers.

Eu mesmo sempre me esqueço da forma correta de fazer.

Existem muitas formas que funcionam, mas certamente há um jeito melhor e menos intrusivo do que o praticado por aí, que muitas vezes contempla até includes do controller original dentro da sua classe.

Uma simulação simples seria para sobrescrever o SubscriberController do módulo Mage_Newsletter (aquele que cuida das assinaturas de newsletter do site).

A forma correta seria criarmos nosso módulo que fará essa reescrita do método desejado dentro do SubscriberController do Magento.

Geralmente no caso desse controller específico geralmente queremos sobrecrever o método newAction(), que cuida das novas assinaturas da newsletter.

Para isso, criamos um módulo qualquer e no seu config.xml colocamos:

<config>
<frontend>
 <routers>
 <newsletter>
 <args>
 <modules>
 <MeuNamespace_MeuModulo before="Mage_Newsletter">MeuNamespace_MeuModulo</MeuNamespace_MeuModulo>
 </modules>
 </args>
 </newsletter>
 </routers>
 </frontend>
</config>

Então criamos um arquivo chamado SubscriberController.php dentro de MeuNamespace/MeuModulo/controllers.

Ele não precisará estender o SubscriberController original.

Poderá simplesmente ficar assim:

<?php
class MeuNamespace_MeuModulo_SubscriberController extends Mage_Core_Controller_Front_Action{
 public function newAction(){
 //código que sobrescreveria o metodo newAction
 }
}

A partir de então, ao chamarmos www.nossaloja.com/newsletter/subscriber/new, nosso método passará a ser chamado no lugar do padrão.

Os demais métodos que não sobrescrevermos continuam sendo chamados normalmente.

[toggle title=”Fonte”]
http://ricardomartins.net.br/
[/toggle]

2014-08-29T14:13:04+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x