Laravel, parte 7: Vistas

Hasta ahora hemos aprendido a crear modelos y controladores, dijimos que los modelos nos sirven para trabajar con la base de datos y los controladores para procesar las distintas peticiones. Además, los controladores no sólo se comunican con los modelos para interactuar con la base de datos, sino también dispondrán de la vista para devolverle la presentación al navegador.

Las vistas están formadas más que nada por código html, aunque pueden incluir pequeños trozos de código php como variables, condicionales o bucles. Por su parte Laravel utiliza un motor de plantillas llamado Blade, que nos facilitará el desarrollo del código y resumirá el mismo.

Crear vistas

Las vistas deben crearse dentro de nuestra carpeta views, dentro de app -> views. Para ello vamos a crear primero una carpeta con el mismo nombre del controlador que habíamos creado en la publicación pasada. Vamos a app -> views y dentro creamos esa carpeta llamada test, y dentro vamos a crear una archivo llamado index.blade.php.

Vamos a editar esta vista con cualquier código, por ejemplo:

<h1> Hola, soy una vista </h1>

Incluir una vista dentro de un controlador

Hasta ahora, cada vez que necesitábamos hacer salidas al navegador mediante las acciones de los controladores, retornábamos una cadena con return. Para devolver una vista completa, vamos a editar el controlador de la publicación pasada de la siguiente forma:

<?php
class TestController extends BaseController {
   public function getIndex() {
      return View::make('test.index');
   }
}
?>

Como se ve en el ejemplo, dentro del método getIndex(), el cual habíamos dicho que es la acción principal de un controlador, devolvemos la salida al navegador mediante la vista, la cual llamamos con la clase View y el método make(). Este método debe incluir el nombre de la vista (sin el «.blade.php»), como en este caso la vista está dentro de una carpeta llamada «test», debemos hacerlo separando con un punto la carpeta de la vista: «carpeta.vista»:

View::make('test.index');

Si reiniciamos nuestro servidor y visitamos la siguiente dirección podremos ver el mensaje de saludo:

https://localhost:8000/test

Pasar variables del controlador a la vista 

Para pasar una variable del controlador a la vista debemos usar el método with():

<?php
class TestController extends BaseController {
   public function getIndex() {
      $nombre = 'Fernando';
      return View::make('test.index')->with('nombre', $nombre);
   }
}
?>

Como podemos ver, el método with() recibe dos parámetros, la variable con el nombre que estará disponible en la vista y el valor de ésta.

Ahora para acceder a la variable en la vista debemos incluirla dentro de doble apertura de llave y doble cierre. Para eso vamos a editar nuestra vista con el siguiente código:

<h1> Hola {{ $nombre }} </h1>

Condicionales y bucles

Si bien la lógica de la aplicación debería definirse en el controlador, dentro de la vista podemos realizar instrucciones simples como condicionales o bucles. Por ejemplo podemos cargar la lista de usuarios de nuestra aplicación y verificar con un if si hay usuario cargados y de haberlos mostrarlos con un foreach.

Para ello vamos a editar nuestra acción con el siguiente código:

<?php
class TestController extends BaseController {
   public function getIndex() {
      $users = User::all();
      return View::make('test.index')->with('users', $users);
 }
}
?>

Aquí recuperamos la lista de usuarios mediante el método all() y lo guardamos en una variable que pasamos a la vista.

Luego para mostrar esta lista en la vista deberíamos editar el archivo index.blade.php con lo siguiente:

<h1> Usuarios </h1>
@if($users)
   <ul>
      @foreach($users as $item)
         <li> {{ $item->real_name }} - {{ $item->email }} </li>
      @endforeach
   </ul>
@else
   <p> No hay usuarios cargados </p>
@endif

Como se ve en el código, cada instrucción ya sea condicional o bucle debe escribirse con un signo @ (arroba), además lo que ya vimos de imprimir variables mediante las doble llaves.

Anterior: Laravel, parte 6: Controladores

Siguiente: Laravel, parte 8: CRUD

 


5 Respuestas a “Laravel, parte 7: Vistas”

  1. saludos gracias por todos tus aportes. te queria consultar algo que me sucede, he tratado de pasar una variable del controlador a la vista pero cuando utilizo la funcion with me da el siguiente error: syntax error, unexpected ‘}’

    esta es la linea que envia el dato:
    return View::make(‘plan’)->with(‘insertId’, $insertId);

    si quito el with y solo retorno la vista el error desaparece.

    ya revise y no tengo llaves demas.! si sabes algo te agradezcoo.
    nota mi version de php es: 5.5
    version de laravel: 4.2