2009-07-29 18 views
5

Piense en un sistema de afiliación pequeño y básico. Quiero una URL comoenrutador Magento: ¿cómo puedo capturar parámetros en todas las URL?

www.myshop.com/mynewproduct.html?afid=123 

Cada vez afid se encuentra en la URL, un método debe ser llamado (básicamente para salvar "AFID" en la sesión y cuando el cliente compra cosas, quiero seguirlo).

¿Alguien aquí que sabe cómo hacer eso? Se aceptan todas las sugerencias ;-)

Respuesta

20

No necesita un enrutador para esto. Deberá configurar un detector de eventos que se active para cada carga de página, y luego acceder a las variables en la colección de solicitudes. El evento controller_front_init_routers debería hacer.

Así configuración, la configuración de su módulo con la siguiente

<global> 
    <events> 
     <controller_front_init_routers> 
      <observers> 
       <packagename_modulename_observer> 
        <type>singleton</type> 
        <class>Packagename_Modulename_Model_Observer</class> 
        <method>interceptMethod</method> 
       </packagename_modulename_observer> 
      </observers> 
     </controller_front_init_routers>  
    </events> 
</global> 

y luego crear la siguiente clase

app/code/local/Packagename/Modulename/Model/Observer.php 
class Packagename_Modulename_Model_Observer { 
    public function interceptMethod($observer) { 
     $request = $observer->getEvent()->getData('front')->getRequest(); 
     $afid  = $request->afid; 

     //do whatever you want with your variable here 
    } 
} 

El interceptMethod se puede nombrar lo que quiera.

+1

Gracias! Ese EL camino ;-) – Max

1

Sé que esta es una respuesta muy antigua, pero es válido mencionar que no debemos usar el evento controller_front_init_routers si tenemos la intención de almacenar esos parámetros en sesión, que es el escenario para la pregunta original. Por ejemplo, si crea una instancia en el customer/session en este punto, ya no podrá realizar un inicio de sesión de cliente. Alan lo señaló él mismo en http://alanstorm.com/magento_sessions_early. Por cierto, gracias Alan por este gran artículo.

Cuestiones relacionadas