Desarrollo del Backend


Vamos a construir todas las funcionalidades necesarias para gestionar y controlar los registros desde el backend de Magento. Podemos considerar al backend como una aplicación independiente al frontend, ya que el backend utiliza estilos diferenes, como también un controlador base diferente.

Vamos a generar un listado de todos los registros de los clientes, modificar la información, agregar y eliminar items.

  • Vamos a extender el Adminhtml desde su configuración.
  • Utilizaremos el widget grid.
  • Utilizaremos el widget form.
  • Restingiremos los accesos y los permisos con Access Control Lists.

Extendiendo el Adminhtml

Mage_Adminhtml es un único módulo que proporciona todas las funcionalidades en el backend de Magento a través del uso de su archivo de configuración utilizando determinados ámbitos. 

Para modificar el backend, tenemos que crear un nuevo ámbito en nuestro archivo de configuración con las etiquetas <admin>...</admin>.

  • Abrimos el archivo de configuración localizado en app/code/loca/Fabricio/Registraregalos/etc/config.xml y pegamos el siguiente código dentro:

    <?xml version="1.0"?>
    <config>
        ....
        <admin>
            <routers>
                <adminhtml>
                    <args>
                        <modules>
                            <fabricio_registraregalos before="Mage_Adminhtml">
                               Fabricio_Registraregalos_Adminhmtl
                            </fabricio_registraregalos>
                        </modules>
                    </args>
                </adminhtml>
            </routers>
        </admin>
        ....
    </config>

Luego de hacer este cambio podríamos acceder desde nuestro navegador por medio de esta ruta http://magentopruebas.localhost/admin/registraregalos/index, pero antes de esto vamos a construir el controlador:
 

  • Creamos una carpeta llamada Adminhtml y luego un archivo llamado RegistraregalosController.php, deberíamos obtener algo así app/code/loca/Fabricio/Registraregalos/controllers/Adminhtml/RegistraregalosController.php.
  • Luego agregamos el siguiente código en nuestro archivo controlador RegistraregalosController.php:

    <?php
    class Fabricio_Registraregalos_Adminhtml_RegistraregalosController extends Mage_Adminhtml_Controller_Action
    {
        public function indexAction()
        {
            $this->loadLayout();
            $this->renderLayout();
            return $this;
        }
    
        public function editAction()
        {
            $this->loadLayout();
            $this->renderLayout();
            return $this;
        }
    
        public function saveAction()
        {
            $this->loadLayout();
            $this->renderLayout();
            return $this;
        }
    
        public function newAction()
        {
            $this->loadLayout();
            $this->renderLayout();
            return $this;
        }
    
        public function massDeleteAction()
        {
            $this->loadLayout();
            $this->renderLayout();
            return $this;
        }
    }
    

Nota algo importante: este nuevo controlador extiende de Mage_Adminhtml_ Controller_Action y no de Mage_Core_Controller_Front_Action, que habíamos estado utilizando antes. La razón de esto es que el controlador de nuestro Administrador tiene una validación adicional para evitar que usuarios no administradores accedan a sus acciones.

Seguramente te habrás dado cuenta que estamos colocando el controlador del backend dentro de la carpeta Adminhtml, esta es una practica común en Magento lo cual nos permite tener el código más organizado.

Volviendo al archivo de configuración

Como hemos visto hasta ahora, en la mayoría de los casos Magento es controlado por los archivos de configuración XML y en el diseño del backend no es diferente. Tenemos que crear un nuevo archivo de diseño para adminhtml. Para esto seguimos los siguientes pasos:

  • vamos a crear la siguiente estructura de carpetas:

    • app/

      • design/

        • adminhtml/

          • default/

            • default/

              • layout/
  • y dentro de la carpeta layout vamos a crear un archivo llamado registraregalos.xml una vez que ayamos realizado todo los pasos debemos tener una ruta como esta app/design/adminhtml/default/default/layout/registraregalos.xml
  • entonces copiamos el siguiente contenido dentro del archivo registraregalos.xml

    <?xml version="1.0"?>
    <layout version="0.1.0">
        <adminhtml_customer_edit>
            <reference name="left">
                <reference name="customer_edit_tabs">
                    <block type="fabricio_registraregalos/adminhtml_customer_edit_tab_registraregalos" 
                        name="tab_registraregalos_main" template="fabricio_registraregalos/registraregalos/customer/main.html"></block>
                    <action method="addTab">
                        <name>fabricio_registraregalos</name>
                        <block>tab_registraregalos_main</block>
                    </action>
                </reference>
            </reference>
        </adminhtml_customer_edit>
    </layout>
    

Ahora necesitamos agregar en el archivo config.xmlel nuevo layout al módulo, para esto vamos a la carpeta etc/ , abrimos el archivo desde la siguiente ruta app/code/local/fabricio/registraregalos/etc/config.xmly copiamos el siguiente contenido en él:

<config>
    ....
    <adminhtml>
        <layout>
            <updates>
                <fabricio_registraregalos module="fabricio_registraregalos">
                    <file>registraregalos.xml</file>
                </fabricio_registraregalos>
            </updates>
        </layout>
    </adminhtml>
    ....
</config>

Con esto estamos creando dentro del diseño un nuevo bloque de contenedores y declarando una nueva ficha que contiene este bloque.

 

Añadir nuevo comentario

CAPTCHA
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.
15 + 3 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.