FuelPHP - Controladores
Controllersson responsables de manejar cada solicitud que entra en la aplicación FuelPHP. Según FuelPHP, los controladores están ubicados enfuel/app/classes/controller/. Primero creemos un controlador de empleados.
employee.php
<?php
class Controller_Employee extends Controller {
public function action_home() {
echo "FuelPHP-Employee application!";
}
public function action_index() {
echo "This is the index method of employee controller";
}
}
Métodos de controlador
Los controladores procesan una solicitud web mediante uno de sus action_ métodos. Podemos crear tantos métodos action_ dependiendo de los requisitos de la aplicación. El método action_ predeterminado es action_index . El método action_index puede ser llamado por cualquiera de las siguientes URL.
http://localhost:8080/employee/index
http://localhost:8080/employee/
Resultado
Creemos un nuevo actionmétodo, action_show en nuestroemployee solicitud.
<?php
class Controller_Employee extends Controller {
public function action_home() {
echo "FuelPHP-Employee application!";
}
public function action_index() {
echo "This is the index method of employee controller";
}
public function action_show() {
echo "This is the show method of employee controller";
}
}
Se puede llamar al método action_show usando la siguiente URL.
http://localhost:8080/home/show
Resultado
método before ()
Podemos crear un método, beforeen nuestro controlador. Este método se ejecutará antes de todas y cada una de las invocaciones del método action_ . No se llamará si ese método resulta no existir. Este método nos ayuda a escribir acciones comunes como la verificación de inicio de sesión, la obtención de datos predeterminados, etc.
Creemos un método antes e imprimamos un mensaje de texto simple.
public function before() {
echo "This message comes from <em>before()</em> method</br>";
}
Página de índice con antes de la acción
Mostrar página con acción antes
después () Método
after() el método es similar a before()pero se ejecuta después de llamar al método action_ . El método after () toma la respuesta como entrada y devuelve el objeto de respuesta .
public function after($response) {
if ( ! $response instanceof Response) {
$response = \Response::forge($response, $this->response_status);
}
return $response;
}
Si la entrada es objeto nulo o no respuesta, a continuación, crear una nueva respuesta objeto utilizando el método de forja de la respuesta y lo devuelve. Aprenderemos la clase de Respuesta en detalle en los capítulos siguientes.
Ampliación de controladores
Podemos extender un controlador de otro controlador. A continuación se muestra la sintaxis básica.
class Controller_Employee extends Controller_Welcome {
// controller methods
}
Esto ayudará a compartir métodos.
Generar controlador
Fuel tiene la opción de generar un controlador usando el comando Oil. A continuación se muestra la sintaxis.
Sintaxis
oil g controller <controller-name>
Ejemplo
oil g controller sample
Después de ejecutar el comando anterior, verá la siguiente respuesta.
Resultado
Creating view: /path/to/project/fuel/app/views/template.php
Creating view: /path/to/project/fuel/app/views/sample/index.php
Creating controller: /path/to/project/fuel/app/classes/controller/sample.php
Tipo de controladores
FuelPHP proporciona diferentes tipos de controlador para diversos propósitos. Son los siguientes:
- Controlador base
- Controlador de plantilla
- Controlador de descanso
- Controlador híbrido
Controlador base
Controller es el controlador base para todos los diferentes tipos de controladores disponibles en FuelPHP. Proporciona todas las funcionalidades básicas necesarias para procesar una solicitud web. Es compatible con Solicitud, Respuesta, Sesión, etc. Lo usaremos en todos los ejemplos a menos que se especifique lo contrario.
Controlador de plantilla
Un controlador de plantilla es una extensión del controlador base. Tiene soporte para plantillas, métodos predefinidos before () y after (). Básicamente, puede usarse para envolver su vista en un diseño con un encabezado, pie de página, barra lateral, etc. Para crear un controlador de plantilla, necesitamos extender la clase Controller_Template . De forma predeterminada, todos los métodos de una clase que amplía Controller_Template necesitan usar la plantilla.
Se define como sigue.
class Controller_Employee extends Controller_Template {
public function action_index() {
// add methods
}
}
Discutiremos más sobre el controlador de plantillas en el capítulo Vistas.
Controlador de descanso
Un controlador de descanso es una extensión del controlador base. Tiene soporte predefinido para la programación de API REST. Esto le permitirá crear API con facilidad.
Para crear un controlador de descanso, debe ampliar la clase Controller_Rest . Se define como sigue.
class Controller_Employee extends Controller_Rest {
public function action_index() {
// add methods
}
}
Discutiremos más sobre el controlador de descanso en el capítulo Ajax.
Controlador híbrido
El controlador híbrido realiza la funcionalidad tanto del controlador REST como del controlador de plantilla en un solo controlador base.