Crear el primer controlador con Alxarafe para Alixar (fork de Dolibarr)

Para este punto del programa, se necesita tener instalado Alxarafe 0.0.7 o superior. Seguimos avanzando en Alxarafe conforme avanzamos en Alixar.

El Dispatcher.

El dispatcher es una clase que realiza dos funciones básicas:

  • Define las constantes de la aplicación.
  • Determina qué controlador va a ser utilizado en función de las variables que se pasen por POST.

Por defecto, Alxarafe utiliza las variables call para el nombre de la clase (que deberá de existir en la carpeta Controller), y run para el nombre del método a ejecutar.

Por ejemplo:

https://www.alxarafe.com?call=controlador&run=método

Nosotros no queremos interferir esa forma de trabajo, pues empezaremos a usarla ahora, pero queremos mantener la opción de hacer un include del archivo de Dolibarr como hasta ahora, de manera que si usamos call se cargará la clase, y si usamos controller, se hará el include.

https://www.alxarafe.com?controller=carpeta&method=fichero

Para hacer ésto, en la carpeta Helpers, hemos creado una clase llamada AlixarDispatcher que extiende el Dispatcher original de Alxarafe.

Si analiza el código de AlixarDispatcher, comprobará que es muy sencillo. Sólo tiene 2 métodos:

  • defineConstants(), que simplemente invoca al parent para definir las constantes de Alxarafe, y posteriormente define las propias.
  • process(), que primero lanza el process del Dispatcher de Alxarafe, y si tiene éxito returna true; si no tiene éxito, intenta localizar el archivo a usar para el include, poniendo su nombre en la variable $this->path, ya que deberá de incluirse desde el index.php y no dentro de la clase.

El controlador.

El controlador no es más que una clase que extiende de \Alxarafe\Base\Controllers.

Probaremos con este código:

class AdvancedAccountancy extends \Alxarafe\Base\Controller
{
public function run()
{
echo 'main in AdvancedAccountancy';
}
public function try2()
{
echo 'try2 in AdvancedAccountancy';
}
}

Sólo con crear este controlador dentro de la carpeta Controllers, ya tendremos disponible las siguientes direcciones:

https://www.alxarafe.com?call=AdvancedAccountancy

https://www.alxarafe.com?call=AdvancedAccountancy&run=try2

Observe que en el primer caso, es indistinto poner &run=run, porque por defecto, si no se indica nada, asumimos que se ejecuta el método run.

Pronto veremos cómo utilizar las vistas con Twig y empezaremos a simplificar la estructura de Dolibarr para mejorar la puntuación de Scrutinizer.

Recuerde que puede seguir la evolución del código, y colaborar en los avances, en:

https://github.com/alxarafe/alixar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *