LuanDantas
3/14/2018 - 12:40 PM

Observer - Como trafegar dados de uma controller para um observer

Controller

O código abaixo faz parte de uma Controller, onde os dados estão disponíveis, e iremos armazenar os dados via sessão, para que possamos resgatá-los em nosso observer.

<?php
class Default_Controller extends Mage_Core_Controller_Front_Action {
    
    public function indexAction() {
        $session = Mage::getSingleton( 'checkout/session' );

        $session->setDirectCheckoutUtmSource( $_GET['utm_source'] );
        $session->setDirectCheckoutUtmCampaing( $_GET['utm_campaing'] );
    }
    
?>

Observer

Aqui, em nosso observer, eu resgato os parâmetros que foram passados via sessão pela nossa Controller.


<?php
class Projeto_CustomBlocks_Model_NomeDoObserver {

    public function NomeDoMetodo() {
        $session = Mage::getSingleton('checkout/session');
        
        $utmSource = $session->getDirectCheckoutUtmSource();
        $utmCampaing = $session->getDirectCheckoutUtmCampaing();
        $query = array();

        if ( !empty( strval( $utmSource ) ) ) {
            $query[] = "utm_source=$utmSource"; 
        }
        
        if ( !empty( strval( $utmCampaing ) ) ) {
            $query[] = "utm_campaing=$utmCampaing"; 
        }

        $query = implode( "&", $query );

        header("Location: " . Mage::getUrl('checkout/onepage', array( '_query' => $query)));
        
    }

}