Guía de Instalación y Uso de Laravel 5
Guía de Instalación y Uso de Laravel 5
https://fernando-gaitan.com.ar/
Índice
Al lector .................................................................................................................................. 1
Instalación............................................................................................................................... 2
Odioso “Hola mundo” ........................................................................................................ 2
Migraciones ............................................................................................................................ 3
Usuarios .................................................................................................................................. 6
Modelos y relaciones .............................................................................................................. 7
Modelos .............................................................................................................................. 8
Relaciones ........................................................................................................................... 9
Controladores y Rutas .......................................................................................................... 10
Controladores.................................................................................................................... 10
Rutas ................................................................................................................................. 10
Vistas y Helpers .................................................................................................................... 14
Helpers .............................................................................................................................. 14
Vistas ................................................................................................................................ 15
Validaciones ......................................................................................................................... 22
Personalizar errores .......................................................................................................... 23
Vue.js y Ajax ........................................................................................................................ 24
Creación del proyecto ................................................................................................... 24
Modelo y Migración ..................................................................................................... 25
Controlador y Rutas ...................................................................................................... 26
Vista .............................................................................................................................. 27
Creando nuestro componente ....................................................................................... 28
Al lector
Este documento ha sido creado con fines educativos. Podés copiar y utilizar cualquier parte
de su contenido, sin embargo se deberá citar la fuente.
Además el mismo ha sido desarrollado el día 15/07/2017, por este motivo pudiesen existir
problemas de incompatibilidad con versiones actuales.
Para seguir en contacto conmigo, podés hacerlo a través de las siguientes redes sociales:
Página 1 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Instalación
Bueno, hace mucho tiempo que no publicaba nada de Laravel, algunos años, cuando
todavía íbamos por la versión 4. Así que en esta ocasión voy a retomar, para mostrarles
cómo crear un aplicación que consistirá de lo siguiente:
Tendremos un formulario para iniciar sesión, y cada usuario podrá acceder a una lista de
tareas que podrán administrar de forma sencilla. Aprenderemos a configurar e instalar un
proyecto Laravel 5, validar los datos, y hacer CRUD.
Una vez hecho todo esto, podemos instalar nuestro primer proyecto. En mi caso voy a crear
un carpeta con el resto de mis proyectos PHP: Por ejemplo en Windows y con Xampp:
cd C:\xampp\htdocs
Y escribimos lo siguiente:
composer create-project laravel/laravel mi_proyecto --prefer-dist
(A esperar…)
Bueno, después de algunos minutos será instalado. Lo siguiente que vamos a hacer será
tirar varias líneas por consola.
Debería mostrarnos por consola un mensaje con algo como: “Laravel development server
started: <https://127.0.0.1:8000>”
Página 2 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Vamos bien!
Ahora ingresamos al proyecto que creamos, vemos que se han generado varios archivos y
carpetas. Editamos el archivo routes/web.php, y agregamos la siguiente línea:
Route::get('test', function(){
return 'Hola mundo';
});
Y luego entramos en
https://localhost:8000/test
El archivo web.php, será el encargado de enrutar las acciones de nuestra aplicación, lo cual
es bastante conveniente, podremos definir nuestras urls para cada página de nuestra web, e
incluso definir cuáles son aquellas que por ejemplo necesitan ser accedidas sólo por los
usuarios autentificados.
Migraciones
En la publicación pasada vimos cómo instalar Laravel e iniciar nuestra aplicación, de acá
en adelante vamos a configurar nuestro proyecto, escribiendo algunas líneas por consola
para crear nuestras migraciones, modelos, vistas, controladores y validaciones. Hoy
veremos migraciones.
Las migraciones nos permitirán crear las entidades de la base de datos y tener una cantidad
de versiones a lo largo que hagamos cambios en nuestras tablas.
Y luego:
php artisan make:migration create_tareas_table
Con respecto a los usuarios, ya viene creada por defecto la migración de dicha tabla, así que
vamos a usar ésa.
Si nos fijamos dentro de database/migrations, nos encontramos con las clases de nuestras
migraciones, incluidas las dos que acabamos de crear.
La relación entre estas tres será la siguiente, un usuario podrá crear una tarea con un estado:
“Pendiente”, “En proceso” o “Finalizada”. Por lo cual una tarea será creada por un usuario,
cada usuario puede crear varias tareas y cada tarea tendrá un solo estado, y estos estados
podrán estar presentes en las distintas tareas.
Si vemos bien, en cada tabla tendremos dos métodos: “up()” y “down()”. El primer se va a
disparar cuando hagamos la migración para crear la tabla, y el segundo cuando se haga
rollback (se descartarán los cambios hechos)
Y en “tareas_table.php”:
public function up()
{
Schema::create('tareas', function(Blueprint $table){
$table->increments('id');
$table->string('titulo');
$table->text('descripcion');
$table->integer('user_id')->unsigned();
$table->integer('estado_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('estado_id')->references('id')->on('estados');
Página 4 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
$table->timestamps();
});
}
El código en ambos casos es igual, en los métodos “up()” creamos las columnas de la base
de datos, mientras que en los métodos “down()” eliminamos las tablas.
Ahora bien, antes de crear las tablas, debemos escribir los datos correctos para que nuestra
aplicación pueda conectarse la base de datos. Así que vamos al archivo: “.env”, de la raíz
de nuestro proyecto y buscamos las siguientes líneas:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Y cambiamos los valores por los de nuestra conexión. Por ejemplo, en mi caso:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_organizador
DB_USERNAME=root
DB_PASSWORD=
Posible error:
Tal vez pueda pasarte como a mí, que te devuelva un error desde la consola:
"[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key
was too long; max key length is 767 bytes (SQ
L: alter table `users` add unique `users_email_unique`(`email`))"
Página 5 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
use Illuminate\Support\Facades\Schema;
En este caso, vamos a eliminar la base de datos, que acabamos de crear, y vamos a volver a
crear una con el mismo nombre, y volver a escribir en la consola:
php artisan migrate
(Lo rojo realizarlo en caso de que al intentar hacer la migración, te devuelva un error)
Listo, ya tenemos nuestras tablas. Lo último que podemos hacer es crear a mano unos insert
para los estados:
INSERT INTO estados(id, nombre)
VALUES
(1, 'Pendiente'),
(2, 'En proceso'),
(3, 'Finalizada')
Usuarios
Bien, esta versión de Laravel nos proporciona una forma muy fácil de crear usuarios, y
teniendo en cuenta lo repetitivo y laborioso que es esto, la solución es genial.
Vamos a ver que al ingresar al sitio, en la parte superior derecha, veremos un “Login” y
“Register”
Todo se ha creado con un profeso scaffolding, así que no vamos a tener que hacer nada
más. Ya podemos empezar a crear usuarios e iniciar sesión.
Login:
Página 6 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Registro de usuarios:
Modelos y relaciones
Bueno, entrando un poco más en nuestro primer CRUD, podemos continuar con los
modelos, donde tratamos la parte de datos que van a interactuar con nuestra aplicación.
Página 7 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Por empezar ya tenemos creado el modelo User, que éste viene por defecto en la
instalación de Laravel, así que vamos a crear los otros dos, Tarea y Estado.
Importante: a la hora de crear tablas deberíamos crearlas en plural, sin embargo los
modelos deberían escribirse en singular, y con la primer letra en mayúscula:
Ojo con esto, porque al escribir las tablas en plural, a diferencia de los modelos que son en
singular, no significa la palabra como tal en castellano/español. Por ejemplo si tuviésemos
que trabajar con canciones en nuestra aplicación, el modelo sería “Cancion”, pero la tabla
no sería “canciones” sino “cancions”:
Simplemente agregamos una “s” al final. Y tampoco hay que escribir con tildes, aunque eso
debería estar más que claro:
Aunque si no querés seguir esta regla, y querés ponerle cualquier otro nombre a la tabla,
dentro del modelo (ahora vemos como crearlos), podés agregar un atributo donde indicar el
nombre de la tabla:
protected $table = 'nombre_de_la_tabla';
Modelos
Bien, vamos a ir a la consola, y vamos a crear los modelos que nos faltan:
php artisan make:model Estado
Y luego:
php artisan make:model Tarea
Si ahora vamos dentro de la carpeta “app”, podemos ver que ya están creados los nuevos
modelos. Así que vamos a editar ambos, y también el que ya estaba desde el principio, que
es User.
Página 8 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Relaciones
Podemos ver los distintos tipos de relaciones dentro de la documentación de Laravel:
https://laravel.com/docs/5.0/eloquent#relationships
Pero, de momento vamos a crear las relaciones de nuestra aplicación que en realidad ambas
son de 1 a n, tanto para las tareas y los usuarios, como para las tareas y los estados.
Esto va a indicarle a ambas entidades que pueden estar ligadas a varias tareas. Por ejemplo
si queremos recuperar un usuario en particular haríamos esto:
$usuario = Usuario::find(1);
Finalmente dentro de nuestro modelo Tarea vamos a hacer la otra parte, agregamos a los
métodos que indiquen a qué entidad pertenecen, a qué usuario y en qué estado están:
public function usuario()
{
return $this->belongsTo('App\User');
}
Y luego:
public function estado()
{
return $this->belongsTo('App\Estado');
}
Página 9 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Esto nos va a permitir que cuando recuperemos una tarea, también podremos ver su estado:
$tarea = Tarea::find(5);
$estado = $tarea->estado;
Controladores y Rutas
Bueno, en esta ocasión vamos a continuar con nuestro proyecto, creando las acciones de
nuestra aplicaciones para administrar las tareas de los usuarios.
Controladores
Un controlador es una clase que permite agrupar las acciones de una sección en particular.
Por ejemplo podemos tener controladores como ProductosController,
ContactoController, RegistroController. Y los métodos de por ejemplo
ProductosController serían “crear”, “modificar”, “eliminar”, “listar”, etc.
Rutas
A la hora de administrar datos en particular, podemos crear un controlador y definir cada
una de sus acciones dentro de routes/app.php de la siguiente forma:
Route::get('/home', 'MiControladorController@metodo');
Sin embargo, a medida que vaya creciendo el proyecto este archivo puede llenarse de líneas
con todas las acciones de toda la aplicación.
Si ahora vamos a app/Http, podemos observar que se creó nuestro controlador con los
siguientes métodos:
Los métodos GET nos van a permitir recuperar datos de la base de datos, y mostrarlos con
una interfaz al usuario. Mientras que los otros son acciones que nos van a permitir realizar
acciones en la base de datos, tanto de INSERT, UPDATE y DELETE. POST para crear
nuevos registros, PUT para modificar registros que ya existente y finalmente DELETE para
eliminarlos.
Como para adelantar un poco, el método create(), que se accede por GET, nos va a mostrar
el formulario para crear nuevas tareas, mientras que store(), que se accede por POST, será
el que nos permita recuperar los datos enviados del anterior y guardarlo en la base de datos.
Ahora para que este controlador pueda ser accedido, tenemos que agregarlo dentro de:
routes/web.php:
Route::resource('/tareas', 'TareasController');
El problema que se presenta acá es que para acceder a esa url: ‘tareas’, tenemos que estar
autentificados, así que para evitar que visitantes sin usuario accedan, deberíamos cambiarlo
por lo siguiente:
Route::group( ['middleware' => 'auth' ], function()
{
Route::resource('/tareas', 'TareasController');
});
Para usar la autentificación, recordemos que para acceder a esta clase, el usuario debe estar
autentificado.
use App\User;
use App\Tarea;
use App\Estado;
Y ahora nos toca agregar el código para que funcionen las acciones.
Página 11 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Mediante all() podemos recuperar todas las tareas que existen. Sin embargo, tratándose de
las tareas de un usuario en particular tendremos que modificar de modo que sólo nos traiga
las tareas de un usuario. Entonces reemplazamos el código por esto:
$tareas = User::find(Auth::id())->tareas;
Ahora create(), que es donde vamos a cargar posteriormente nuestro formulario para
guardar una nueva tarea, tendrá el siguiente código:
public function create()
{
$tarea = new Tarea();
$estados = Estado::all();
}
En este caso sí usamos el método all() porque necesitamos todos los registros de una tabla.
La clase Request nos permite recuperar los datos enviados por un usuario, creamos una
nueva instancia de Tarea, le agregamos los datos correspondientes enviados por el usuario y
finalmente usamos el método save() para guardar la tarea. Con respecto a la última línea, es
sólo un redireccionamiento a la lista de tareas del usuario.
En show() simplemente recuperamos una tarea por su id, el cuál se pasa como parámetro:
public function show($id)
{
$tarea = Tarea::find($id);
}
Página 12 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
La acción edit() va a ser similar a create(), sólo que en lugar de crear un nuevo objeto
Tarea, vamos a recuperar uno por su id:
public function edit($id)
{
$tarea = Tarea::find($id);
$estados = Estado::all();
}
Y al enviar los datos desde esta acción van a modificarse con los datos del id:
public function update(Request $request, $id)
{
$tarea = Tarea::find($id);
$tarea->titulo = $request->titulo;
$tarea->descripcion = $request->descripcion;
$tarea->estado_id = $request->estado_id;
$tarea->user_id = Auth::id();
$tarea->save();
return Redirect::to('tareas')->with('notice', 'Tarea guardada
correctamente.');
}
Vemos que a diferencia del método create(), no hacemos un new para crear una nueva
instancia, sino que recuperamos el objeto completo con find($id) y luego modificamos los
valores del registro. Por último también haremos una redirección a la lista de tareas.
Finalmente creamos el último método que es destroy(), el cual nos va a permitir eliminar un
registro:
public function destroy($id)
{
$tarea = Tarea::find($id);
$tarea->delete();
}
Nos va a traer una tarea por su id, sin embargo, teniendo en cuenta que cada tarea le va a
pertenecer a otro usuario, y no debería ser accedida por otro, deberíamos reemplazar esa
línea por lo siguiente:
$tarea = Tarea::where(array(
'id' => $id,
'user_id' => Auth::id()
))->first();
Página 13 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Bueno, en la próxima publicación vamos a corregir el código para agregar los formularios
correspondientes y así darle una interfaz gráfica a nuestra aplicación.
Vistas y Helpers
Bueno, ahora que ya tenemos el funcionamiento lógico de nuestra aplicación, sólo nos falta
agregar la parte visual. Para ello vamos a tener que crear los archivos para ver, modificar o
eliminar las tareas.
Helpers
En mi opinión, siempre prefiero evitar este tipo de herramientas, pero visto y considerando
que son muy útiles para la mayoría de los desarrolladores, vamos a crear nuestra aplicación
con helpers.
Los helpers nos permiten crear contenido html por medio de código propio del framework,
una función a la cual podemos pasar parámetros y ésta se encargará de crear el código html
correspondiente.
Así que primero vamos a abrir nuestro archivo “composer.json”, y a buscar “require”. En
mi caso mi archivo es así:
"require": { "php": ">=5.6.4", "laravel/framework": "5.4.*",
"laravel/tinker": "~1.0" }
Pero atención, la versión que yo estoy usando de Laravel es la “5.4”, si estás usando otra,
deberías poner la que corresponde. Podés fijarte en el valor de “laravel/framework”, o bien
escribir en consola:
php artisan --version
Una vez que terminemos de editar este archivo, vamos a la consola y escribimos lo
siguiente:
Página 14 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
composer update
Una vez que termine la descarga desde la consola, editar el archivo “config/app.php”, y
buscamos dentro de “providers”, y dentro de la lista agregamos:
Collective\Html\HtmlServiceProvider::class,
Vistas
Bueno, ahora vamos a crear las vistas. Tendremos tres vistas, una para mostrar las tareas,
otra para visualizar una en particular y otra para guardarlas (crear o modificar)
Así que dentro de resources/views vamos a crear un directorio llamado tareas, y dentro los
tres archivos:
• index.blade.php
• show.blade.php
• save.blade.php
Antes de editar el código, vamos a detenernos algo. A la hora de crear interfaces visuales,
casi siempre hay código html que se repite entre página y página. Por ejemplo cabeceras,
pies de página, archivos externos (css, js, imágenes). Laravel nos permite crear una plantilla
base, y luego poder reutilizar dicho diseño, incluyendo solamente en cada una el código que
cambia entre página y página.
Por ejemplo, podemos encontrar los enlaces del menú que cambian dependiente de si el
usuario está logueado o no:
@if (Auth::guest())
Esta línea indica que el usuario no está logueado, así que va a visualizar en este caso los
enlaces para iniciar sesión o bien registrarse.
Página 15 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Vamos a aprovechas para agregar el siguiente enlace para acceder con un link a las tareas,
siempre y cuando el usuario esté logueado:
<li>
<a href="/tareas">
Tareas
</a>
</li>
En primer lugar extendemos de otra vista, la cual tiene una suerte de plantilla para el resto
de nuestras interfaces gráficas:
Página 16 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
@extends('layouts.app')
Este es un helper para abrir un formulario. La url es ‘tareas’ + barra (/) + id, en caso de que
haya un id. Osea este formulario nos va a servir cuando tengamos una tarea nueva o una
que vamos a editar. Por eso en la publicación pasado escribimos :
$tarea = new Tarea();
Será una variable que le pasamos el método. Cuando sea el método create(), le vamos a
pasar ‘POST’, que es para crear un nuevo registro; cuando sea el edit(), entonces será
‘PUT’, para modificar.
Y cerramos con:
{!! Form::close() !!}
Mientras que text() es el name, el value por defecto y el tercer parámetro es un array con
datos adicionales como la clase que usamos.
Página 17 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Y luego si coincide con el estado que estamos recorriendo, para ponerla en selected o no:
$item->id == $tarea->estado->id
Finalmente vamos a modificar los métodos create() y edit() que creamos la última vez,
permitiendo que se cargue esta vista.
public function create()
{
$tarea = new Tarea();
$estados = Estado::all();
return View('tareas.save')
->with('tarea', $tarea)
->with('estados', $estados)
->with('method', 'POST');
}
Como podemos observar le pasamos por parámetro un dato llamado ‘method’, el cual va a
cambiar dependiendo de si lo enviamos por ‘POST’ o ‘PUT’.
Página 18 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Página 19 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Editarlas:
{!! link_to('tareas/'.$tarea->id.'/edit', 'Editar', ['class' => 'btn btn-
primary']) !!}
O bien, eliminarlas:
{!! Form::open(array('url' => 'tareas/' . $tarea->id, 'method' =>
'DELETE')) !!}
{!! Form::submit('Eliminar', ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}
Es importante observar que en este último, debemos crear un formulario para hacer un
envío con el método ‘DELETE’, al igual que lo hacíamos en el formulario para guardar con
‘POST’ o ‘PUT’.
Página 20 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Por último y para termina vamos a reemplazar show.blade.php con el siguiente código:
@extends('layouts.app')
@section('content')
<div class="container">
<h1> {{ $tarea->titulo }} ({{ $tarea->estado->nombre }}) </h1>
<div class="row">
<div class="col-lg-12">
{{ $tarea->descripcion }}
</div>
<hr />
<div class="col-lg-12">
{!! link_to('tareas', 'Volver', ['class' => 'btn btn-danger'])
!!}
</div>
</div>
</div>
@endsection
Página 21 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Validaciones
Bueno, ya tenemos nuestra aplicación funcionando, podemos registrarnos, iniciar sesión y
administrar tareas. Sin embargo, por si no lo notaste, cuando guardamos una tarea no
tenemos en cuenta los campos de validación. Aunque las validaciones parecen siempre un
dolor de cabeza, Laravel nos permite hacerlo más llevadero, e incluso en esta última
versión es más fácil que nunca.
Los objetos de tipo Request nos permiten recuperar datos del cliente, como por ejemplo los
campos ingresados por el usuario.
Entonces vamos a crear una clase Request de la siguiente forma. Abrimos la consola e
ingresamos:
php artisan make:request TareasRequest
Página 22 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Ahora para que el controlador acepte estas validaciones vamos a reemplazar la cabecera de
los métodos store() y update(). Primero vamos a TareasController y agregamos la siguiente
línea en la cabecera (antes de class):
use App\Http\Requests\TareasRequest;
Y luego:
public function update(TareasRequest $request, $id)
Personalizar errores
Por último, al ingresar datos incorrectos, podemos observar que estos se ven así:
Página 23 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Vue.js y Ajax
Bien, en esta publicación vamos a ver cómo integrar Vue a un proyecto hecho en Laravel.
El ejemplo será el siguiente: vamos a administrar una lista de notas con Ajax. Será muy
simple, sin embargo llevaremos a cabo una serie de pasos como crear migraciones,
compilar un archivo .Vue, usar la librería de vue-resource, etc.
• Composer
• Node.js
En el caso de Node.js, la instalación del mismo, nos permitirá usar el comando npm. Podés
probar en tu computadora, abriendo una terminal (símbolo de sistema en Windows) y
escribir lo siguiente:
npm --info
https://nodejs.org/es/
Página 24 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Una vez instalado, vamos a la raíz del proyecto y buscamos un archivo llamado:
‘package.json’, donde van las dependencias (‘devDependencies’), agregamos vue y vue-
resource:
"vue": "^2.1.10",
"vue-resource": "^1.3.4"
Probablemente ya exista la primera (vue), de ser así, la dejamos y sólo agregamos ‘vue-
resource’
Modelo y Migración
Primero vamos creamos una base de datos, en mi caso se va a llamar ‘laravel_vuejs’. Luego
en el raíz de nuestro proyecto editamos .env:
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_vuejs
DB_USERNAME=root
DB_PASSWORD=
Página 25 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Controlador y Rutas
Página 26 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Route::get('/mostrar_notas', 'NotasController@mostrarNotas');
Route::post('/guardar_nota', 'NotasController@guardarNota');
Route::post('eliminar_nota', 'NotasController@eliminarNota');
Vista
Ahora vamos a crear la vista para administrar las notas, dentro de resources/views con el
nombre ‘notas.blade.php’,:
<!doctype html>
<html lang="{{ config('app.locale') }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Laravel y Vue</title>
<link rel="stylesheet" href="{{ elixir('css/app.css') }}">
</head>
<body>
<div id="app" class="container">
<h1> Notas </h1>
<notas></notas>
</div>
<input type="hidden" id="csrf_token" value="{{ csrf_token() }}" />
<script src="{{ elixir('js/app.js') }}"></script>
</body>
</html>
Cargamos una hoja de estilos, esto tiene que ver más con la parte estética, no influye en el
funcionamiento:
<link rel="stylesheet" href="{{ elixir('css/app.css') }}">
Incluimos el componente:
<notas></notas>
Aunque aún no lo hemos creado, esta es la forma de incluir componentes. Toda la parte
visual de la administración de notas se incluye con las etiquetas con dicho nombre.
Etiquetas que por supuesto no son de html, sino inventadas por el desarrollador.
Página 27 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
Aunque las peticiones por POST las haremos con ajax, de cualquier manera tenemos que
enviar el token en cada envío, ya que Laravel por cuestiones de seguridad espera por
cabecera este dato.
Y por último incluimos el .js base de la aplicación, el cual va a incluir por ejemplo vue,
vue-resource y los componentes que vayamos creando:
<script src="{{ elixir('js/app.js') }}"></script>
Creo que a estas alturas la mayoría deben saber de qué se trata, pero si no es así podés verlo
de la siguiente forma: imaginate un tablero que contiene una pantalla, botones y palancas.
La vista serían justamente esos elementos que en conjunto forman el tablero, pero será el
controlador quien por ejemplo guarde la información que vemos y no vemos por pantalla
(datos), o que al pulsar en un botón suceda algo (métodos)
Para crear nuestro componente primero tenemos que incluir las librerías, entonces vamos a
resources/assets/js/app.js y copiamos el siguiente código:
require('./bootstrap');
window.Vue = require('vue');
Vue.use(require('vue-resource'));
Vue.http.headers.common['X-CSRF-TOKEN'] =
document.getElementById('csrf_token').value;
Aquí incluimos bootstrap y vue. También vue-resource la librería que nos va a permitir
hacer peticiones http. Y finalmente agregamos el token para no tener que preocuparnos en
cada petición por POST.
Página 28 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
<script>
export default {
data(){
return {
nota_temp: {
descripcion: ''
},
notas: []
}
},
methods: {
mostrarNotas(){
this.$http.get('/mostrar_notas').then(response => {
this.notas = response.body;
}, response => {
alert('Error');
});
},
guardarNota(){
this.$http.post('/guardar_nota', {
descripcion: this.nota_temp.descripcion
}).then(response => {
this.nota_temp.descripcion = '';
this.notas = response.body;
}, response => {
alert('Error');
});
},
eliminarNota(p_nota){
this.$http.post('/eliminar_nota', {
id: p_nota.id
}).then(response => {
this.notas = response.body;
}, response => {
alert('Error');
});
}
},
created(){
Página 29 de 30
Laravel 5 - https://fernando-gaitan.com.ar/
this.mostrarNotas();
}
}
</script>
Página 30 de 30