Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/controller»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «{{TEP}} {{:Usuario:ManuelRomero/micursos/Laravel/Componentes/nav}} <br> __NOTOC__»)
 
 
(4 revisiones intermedias por el mismo usuario no mostrado)
Línea 3: Línea 3:
 
<br>
 
<br>
 
__NOTOC__
 
__NOTOC__
 +
===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
 +
<source lang=php>
 +
<?php
 +
class UsuarioControllers extends BaseController {
 +
  //Aquí escribiremos los métodos que queremos que implemente el controlador
 +
 +
}
 +
?>
 +
</source>
 +
*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.
 +
[[Archivo:ModeloVC.png]]
 +
#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
 +
<source lang=php>
 +
<h3>Datos de usuarios </h3>
 +
@foreach($usuarios as $usuario)
 +
  <li>
 +
      {{ $usuario->nombre.' '.$usuario->apellido }}
 +
    </li>
 +
@endforeach
 +
</source>
 +
;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
 +
<source lang=php>
 +
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
 +
    }
 +
</source>
 +
 +
*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
 +
 +
<!--Ejemplo obtenido de http://codehero.co/laravel-4-desde-cero-estructura-del-proyecto/ -->

Última revisión de 03:16 8 may 2015

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg




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.

ModeloVC.png

  1. 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