Es tutorial1 controlador - Patroklo/F--fast-forms GitHub Wiki

Si los modelos son el alma de todas las páginas web, los controladores son su cuerpo; sin ellos no podríamos referenciar ninguna página ni llamar a ninguna función de los modelos.

Hasta ahora en este pequeño tutorial hemos creado una tabla que guardará los libros de una biblioteca y un modelo que trabajará con ella insertando, editando y borrando sus entradas. Ahora lo que haremos será crear las funciones que permitan llamar a las páginas web para cargar los formularios y trabajar con el modelo.

Para ahorrar tiempo y vistas, pondré los mensajes de éxito dentro del propio controlador en lugar de una vista para cada uno. Esto no debería hacerse así, sino que tendrían que tener cada una su propia vista.

En resumen lo que haremos será:

  1. Crear el controlador.
  2. Crear la función de inserción.
  3. Crear la función de edición.
  4. Crear la función de borrado.

Paso 1. Crear el controlador:

Será como cualquier controlador normal que tenga el proyecto de codeigniter. No tiene nada de especial ya que el peso de la configuración y código específico recae en la capa del modelo. Por lo tanto, crearemos un archivo llamado "libros.php" y procederemos a ponerle una estructura básica de controlador de codeigniter.

class libros extends CI_Controller {

function __construct() {
	parent::__construct();
	$this->load->model('libros_model');
}

function index() {
	echo "INDEX PAGE";
}

}

He creado una función index símplemente por tener una entrada principal. En este tutorial no tendrá ninguna relevancia.


Paso 2. Crear la función de inserción:

O lo que es lo mismo en el controlador, la página de inserción de datos. No voy a extenderme demasiado explicando el código ya que está cada función debidamente explicada en su sección correspondiente, no obstante, citaré para qué sirve cada una.

El código de la inserción sería:

function insertar()
{
		$this->libros_model->rulesInsert();
		if ($this->fff_form_validation->run() == FALSE)
		{
			$data['config'] = array('form_open' => 'libros/insertar');
			$this->load->vars($data);
			$this->load->view('libros/nuevo');
		}
		else
		{
			$this->libros_model->insert();
			echo "Insertado un nuevo libro!";
		}
}

En la primera línea llamamos a la función "rulesInsert" del modelo. Símplemente se encarga de iniciar las validaciones de los campos que se mostrarán en el formulario.

Después hacemos una llamada a form validation, pero, en lugar de hacerla a la librería predeterminada de Codeigniter, lo hace a una propia que viene con el módulo de FFF. Eso está explicado en su sección del fichero.

La variable $data['config'] se encarga de enviar a la vista datos necesarios para el funcionamiento del formulario. En este caso le mandamos la dirección a la que tendrá que apuntar el submit del form en la vista. También podríamos haberlo configurado en el __construct de "libros_model" y haber evitado esta línea.

Finalmente, si la validación ha sido positiva, llamamos a la función insert() del modelo y mostramos un mensaje de éxito.

Como podréis comprobar, no se realiza a nivel de controlador ninguna entrada de datos post ni nada parecido. De todo esto se encarga FFF.


Paso 3. Crear la función de edición:

Al igual que con la de inserción, explicaré por encima qué hace cada función que se salga un poco de lo normal: function editar()

{
		if(!$this->libros_model->carga($this->uri->segment(3)))
		{
			show_404();
		}

		$this->libros_model->rulesEdit();
		
		if ($this->fff_form_validation->run() == FALSE)
		{
			$data['config'] = array('form_open' => 'libros/editar/'.$this->uri->segment(3));
			$this->load->vars($data);
			$this->load->view('libros/nuevo');				      
		}
		else
		{
			$this->libros_model->edit();
			echo 'Editado con éxito!';
		}


}

Primero tenemos la función carga. Es primordial para el funcionamiento de una edición. Para editar un dato antes tenemos que cargarlo. Por ello, si ésta retorna un false es que no existe el libro que hemos querido buscar, y mostrará un error 404.

Después hacemos lo mismo que con la inserción, una llamada a las reglas de validación de todos los campos del formulario, en este caso tirará de las de edición, que no tienen por qué ser las mismas que las de inserción.

Volvemos a encontranos con la variable "config" para la dirección a la que tendrá que llamar el submit de la vista. También podríamos haberla configurado en el modelo libros_model.

Como nota, se llama también a la vista "libros/nuevo". No tiene por qué hacerse necesariamente así, no obstante, ya que el código de la vista va a ser tan sencillo, nos vale para la inserción y la edición. Así nos ahorramos archivos.


Paso 4. Crear la función de borrado.

Esta es un poco diferente a las dos primeras, ya que no va a tener una vista. Símplemente borrará o mostrará un error.

function borrar()
{
	
	if ($this->snaps_model->delete($this->uri->segment(3)))
	{
		echo 'Borrado con éxito!';
	}
	else
	{
		show_404();	
	}

}

Como véis en realidad se podría haber resumido en una sola línea.

Y con esto ya tenemos todo el controlador hecho.