Controller

Todos los controladores de las aplicaciones deben extender esta clase. Aunque no siempre sea evidente, cuando el Router llama al controlador, ejecuta métodos de esta clase.

A su vez, el framework no tiene una clase dedicada a las vistas, sino que hay un método de esta clase, que realiza la tarea de incluir las vistas. Esto se debe a que el framework vincula un punto de entrada de un controlador con una vista, facilitando el desarrollo.

 

Controller::middleware

Agrega middlewares en la cola del Runner (ver El archivo Index).

public Controller::middleware( ...$middlewares ): bool
middlewares

La lista de middlewares a agregar.

 

Los middlewares pueden ser agregados en el constructor, lo que se ejutará en todos los puntos de entrada, de la siguiente manera:

use Junco\Mvc\Controller;

class ApiTestController extends Controller
{
	public function __construct()
	{
		$this->middleware('test');
	}
}

También, puede ser agregado en un punto de entrada en particular.

El mecanismo para hacerlo puede parecer extraño, pero debe entender que cualquier middleware debe ser ejecutado ANTES de ejecutar el punto de entrada, por lo tanto, la opción que nos queda para lograr esto es, ejecutar dos veces ese punto de entrada, uno para agregar los middleware en la cola y ejecutarlos, y otra para ejecutar el punto de entrada en sí.

Dicho esto, el código será:

use Junco\Mvc\Controller;

class ApiTestController extends Controller
{
	public function index()
	{
		if ($this->middleware('test')) {
			return true;
		}
		return '...';
	}
}

Si un punto de acceso devuelve true, eso significa que ha agregado middlewares y debe volver a ejecutar el ciclo de middlewares hasta llegar nuevamente al punto de acceso y volver a ejecutarlo, esta vez, para obtener una respuesta.

 

Controller::authenticate

Agrega el middleware de autenticación. Por su uso frecuente, se facilita su uso con un método propio.

public Controller::authenticate( int ...$label_id ): bool
label_id

La etiqueta con la que se limitarán los permisos de acceso. Ver la extensión users.

 

Controller::view

Incluye una vista. La vista será incluída dentro del método, por lo que, la variable $this, prodrá ser utilizada allí.

public Controller::view( string|callable $view = null, array $data = null )
view

La ruta a la vista a incluir, si no se completa, agregará la vista predeterminada por las convenciones.

data

Los datos que se le pasará a la vista.