Urgando en SuiteCRM
marzo 20, 2016 Publicado en Software y HardwareEtiquetas: SuiteCRM
La C del MVC
- Urgando en SuiteCRM
- La C del MVC
- La V del MVC
El primer paso para agregar controles a un módulo es determinar si existe el archivo controlador propio, el cual debería estar ubicado en
/<directorio_crm>/modules/<Módulo>/controller.php
Si no existe, esto indicaría que el módulo emplea el controlador por defecto y que por lo tanto podríamos crear un nuevo controlador en custom para este módulo particular. Pero si por el contrario el archivo existe, habrá que optar entre extender las acciones disponibles o crear un nuevo controlador.
El primer paso es crear el archivo de control personal en
/<directorio_crm>/custom/modules/<Módulo>/controller.php
Dependiendo de la situación en que nos encontremos usaremos uno de los siguientes encabezados (mucha atención, debe usar las mayúsculas tal cual en el nombre del módulo):
- Si existe archivo de control en /<directorio_crm>/modules/<Módulo>/ y queremos reusar las acciones declaradas:
<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); require_once 'modules/<Módulo>/controller.php'; class Custom<Módulo>Controller extends <Módulo>Controller { }
- Cualquier otro caso.
<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); class Custom<Módulo>Controller extends SugarController { }
Una vez creado el archivo de control el siguiente paso está en agregar las acciones a la clase a partir del siguiente esquema
<?php
public function action_<nombreAcción>() {
// Acciones del control
// Acciones del control
// Acciones del control
//Asignamos el actual bean como el elemento a
//visualizar en la siguiente vista
$this->view_object_map['currentBean'] = $this->currentBean;
//Definimos la siguiente vista
$this->view = '';
}
Por último ejecutamos la acción de “Reparar y Reconstruir“ y paso seguido lo que tendremos ahora es la posibilidad de ejecutar esta función usando la siguiente URL
http://<host_crm>/<directorio_crm>/index.php?module=<módulo>&action=<nombreAcción>
Esta función de control podrá recibir variables por GET o por POST (igual que cualquier otro script php), incluirá el entorno global ( por ejemplo $this->currentBean ) y tendremos además acceso a todas las primitivas de SuiteCRM para administrar las instancias de los módulos.
Sin embargo este tipo de declaraciones tiene una limitante, y es que por tratarse de un controlador es de esperar que no podamos hacer una impresión directa en pantalla. Al fin de cuentas se trata de la C en un MVC. ¿Entonces cómo hacer uso de la V?
La respuesta se encuentra en las últimas líneas de la función donde se indica cuál será la instancia a mostrar y cuál será la vista que presentará SuiteCRM a continuación. En el código de ejemplo estamos usando la variable <vista> que puede usar una de las opciones por defecto (edit, detail o list) o una vista personalizada.