Controladores

Los controladores son una parte fundamental a la hora de crear páginas dentro de la aplicación.

Lanzador, moverse entre páginas

En Ocrend Framework, los controladores son la forma de crear nuevas "páginas" a las cuáles se podrá acceder desde la URL.

http://localhost/Ocrend-Framework/controlador/

Si hacemos eso, probablemente caemos en una página de 404 personalizada, sin embargo al colocar home/ veremos la página principal. Se puede notar que la forma de moverse entre páginas es utilizando URL's Amigables.

Existe un lanzador que se encarga de accionar el controlador que se solicita por la URL a través de un enrutador.

El lanzador interpreta la petición en la URL y trata de buscar la coincidencia de un controlador en la carpeta ./app/controllers/, si lo encuentra lo ejecuta y si no hay coincidencias ejecutará siempre errorController.

Creación de un controlador

Todos los controladores de nuestra aplicación deben crearse en la ruta ./app/controllers/ y el formato del nombre debe ser nombreController.php, el nombre del archivo debe ser exactamente el mismo que el de la clase contenedora.

Para que un controlador sea 100% funcional, debe herederar de la clase padre Ocrend/Kernel/Controllers/Controllers e implementar la interfaz Ocrend/Kernel/Controllers/IControllers

Vamos a crear el controlador ejemplo, para ello debemos crear el fichero./app/controllers/ejemploController.php


namespace app\controllers;

use app\models as Model;
use Ocrend\Kernel\Router\IRouter;
use Ocrend\Kernel\Controllers\Controllers;
use Ocrend\Kernel\Controllers\IControllers;
  
class ejemploController extends Controllers implements IControllers {

    public function __construct(IRouter $router) {
        parent::__construct($router);   
        echo 'Soy un controlador de ejemplo';
    }

}					
					

A continuación, si visitamos http://localhost/Ocrend-Framework/ejemplo/ debe aparecer el mensaje "soy un controlador de ejemplo" en la pantalla de nuestro navegador web.

Creación de un controlador con el generador

Otra forma de crear un controlador, es usando el generador de código el cual sin falla alguna escribirá todo el código necesario para que el controlador quede funcional.

php gen.php app:c Prueba

La consola deberá indicar si se creó el controlador con éxito, en caso de que ya exista un controlador con ese nombre, no será creado

La clase Controllers

La clase Controllers está ubicada en el namespace Ocrend/Kernel/Controllers/Controllers. Es una clase abstracta, ésta existe sólo para ser heredada por los controladores de nuestro sitio y distribuir de forma global funciones, propiedades y métodos entre todas las páginas (controladores) que tenga nuestra aplicación.

Método / Atributo Función
protected $template Objeto de tipo Twig_Environment cuya finalidad es darnos soporte para el uso de plantillas TWIG y manipular las vistas desde los controladores.
protected $isset_id Booleano que se establece en true cuando la ruta /id de la URL está definida como un número entero mayor a cero, y false cuando no cumple con dicha condición.
protected $method Contiene la información que se recibe a través de la ruta /method siempre y cuando ésta esté definida, de lo contrario será null
protected $functions Contiene la instancia del Helper Functions
protected __construct() Constructor inicializador de la clase.
IRouter $router interfaz del enrutador para obtener información sobre la url.
$configController = null arreglo de configuración sobre el controlador.
  • 'twig_cache_reload' => Booleano Configura el autoreload del caché de TWIG
  • 'users_logged' => Booleano Configura el controlador para solo ser visto por usuarios logeados
  • 'users_not_logged' => Booleano Configura el controlador para solo ser visto por usuarios no logeados

La interfaz IControllers

La implementación de ésta interfaz es para garantizar el correcto funcionamiento del controlador.

Método Necesario
public __construct(IRouter $router)