viernes, 30 de diciembre de 2011

Magento: Como sobreescribir un controller

Plantilla básica de un config.xml para hacer sobreescribir un cotroller, incluye la version para sobreescribir un controller del front como la del admin.

Variables (Respetar las mayúsculas es importante):

{{Empresa}} ó {{empresa}} Nombre de espacio dentro de ./app/code/local
{{Modulo}} ó {{modulo}} Nombre del modulo dentro del nombre de espacio, debe estar dentro de ./app/code/local/{{Empresa}}
{{controller}} Nombre del modelo del controller.
{{modulonativo}} Nombre del modulo al que pertenece el controller que vamos a sobreescribir.
{{controllernativo}} Nombre del controller que vamos a sobreescribir.

Precondiciones:
    Tener declarado el modulo con el archivo ./app/etc/{{Empresa}}_{{Modulo}}.xml
    Tener ya la estructura de directorios del modulo, y el controller.
    Tener el archivo config.xml del modulo
Los conotrollers no respetan la nomenclatura standard del autoinclude de Magento, por lo que es necesario hacer un require_once
Para hacer una reutilización optima del código del core, la clase del controller debe extender a la clase del controller que vamos a sobreescribir.

<?xml version="1.0"?>
<config>
    <modules>
        <{{Empresa}}_{{Modulo}}>
            <version>0.1.1</version>
        </{{Empresa}}_{{Modulo}}>
    </modules>
    <frontend>
        <routers>
            <{{modulo}}>
                <use>standard</use>
                <args>
                    <module>{{Empresa}}_{{Modulo}}</module>
                    <frontName>{{modulo}}</frontName>
                </args>
            </{{modulo}}>
        </routers>
    </frontend>
    <admin>
        <routers>
            <{{modulo}}>
                <use>admin</use>
                <args>
                    <module>{{Empresa}}_{{Modulo}}</module>
                    <frontName>{{empresa}}{{modulo}}</frontName>
                </args>
            </{{modulo}}>
        </routers>
    </admin>
<global>
        <rewrite>
            <{{empresa}}_{{modelo}}_{{controller}}>
                <from><![CDATA[#^/{{modulonativo}}/{{controllernativo}}/#]]></from>
                <to>/{{empresa}}{{modulo}}/{{controller}}/</to>
            </{{empresa}}_{{modelo}}_{{controller}}>
        </rewrite>
</global>
</config>

No hay comentarios:

Publicar un comentario