Usuario:ManuelRomero/Laravel/componentes controladores
De WikiEducator
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
Controlador en Laravel
- Es la manera de definir el comportamiento de la aplicacion
- Hasta ahora hemos usado router para decir que hacer cuando el usuario accede a una determinada URL, podemos organizarlo mejor
- Los controladores serán ficheros php que ubicaremos en la carpeta app/http/controllers
- Nuestros controladores extenderán de la clase base BaseController de laravel
- A continuación vamos a crear un controlador para ver su funcionamiento
<?php class UsuarioControllers extends BaseController { //Aquí escribiremos los métodos que queremos que implemente el controlador } ?>
- Pare ver su funcionamiento vamos a hacer un ejemplo
- Supongamos que qeremos hacer una aplicación que visualice todos los usuarios que tenemos en una base de datos
- Para hacerlo, vamos a usar el modelo vista controlador
- El modelo se encargará de leer de la base de datos
- El controlador aportará los datos para la vista
- LA vista los visualizará
- Este sencillo ejemplo muestra la forma de desarrollar código con laravel.
- Creamos la base de datos
- Para especificar la base de datos de nuestro proyecto vamos a
/config/database.php
- Ahí la configuramos
- Ahora en mysql, en la base de datos especificada creamos una tabla de usuarios o usamos la que ya tenemos.
- El modelo, será la parte encargada de acceder a la base de datos y recuperar la información
- El larevel para gestionar la base de datos se usa Eloquent ORM; Esta clase nos va a permitir acceder a la base de datos casi sin darnos cuenta que lo estamos haciendo, eliminandonos todo el trabajo que en realidad es siempre repetitivo de conectar e interactuar con la base de datos
- Vamos a ver la sencillez de su uso
Cremos una clase como modelo (en la carpeta correspondiente /app/models <?php class Usuario extends Eloquent { //Todos los modelos deben extender la clase Eloquent
protected $table = 'usuarios';
} ?> Por defecto al se la clase usuarios, el ya obtiene la tabla con el mismo nombre en plurar, por lo que no haría falta ni poner la variable a utilizar
Laravel asume que todas las tablas tienen tres campos básicos ‘id’ (clave primaria), ‘created_at’, ‘updated_at’. Los últimos dos son llenados automáticamente por el framework.
- La vista
- Es crear una plantilla de blade, pero ahora queremos añadir la información de los usuarios
- Para ello contamos que disponemos de la variable $usuario
<h3>Datos de usuarios </h3> @foreach($usuarios as $usuario) <li> {{ $usuario->nombre.' '.$usuario->apellido }} </li> @endforeach
- El controlador
- Ahora vamos a la parte del controlador
Ya hemos dicho que ha de derivar de la clase BaseController y preferiblemente ha de estar ubicado en la carpeta app/controller
- Ahora vamos a crear un método que obtenga la información de todos los usuarios y se los pase a la vista creada anteriormente. Añadimos un método
public function mostrarUsuarios() { $usuarios = Usuario::all(); // Con el método all() le estamos pidiendo al modelo de Usuario // que busque todos los registros contenidos en esa tabla y los devuelva en un Array return View::make('usuarios.lista', array('usuarios' => $usuarios)); // El método make de la clase View indica cual vista vamos a mostrar al usuario //y también pasa como parámetro los datos que queramos pasar a la vista. // En este caso le estamos pasando un array con todos los usuarios }
- Y ahora solo nos quedaría especificar en la ruta el controlador que queremos que ejecute cuando seleccionemos esta url.
- En lugar de especificar clausuras o funciones anónimas, se pueden especificar controladores que además es lo que se suele hacer.
Route::get('usuarios', array('uses' => 'UsuarioControllers@mostrarUsuarios'));
- Ahora solo queda probar el ejemplo