Está en la página 1de 14

Nro.

DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 1

I. OBJETIVOS

○ Añadir a Laravel la funcionalidad para el manejo de MongoDB.


○ Conectarse a MongoDB y crear documentos de prueba con Laravel.
○ Modificar y crear rutas.
○ Crear un controlador y vistas simples.

II. SEGURIDAD

Advertencia:
En este laboratorio está prohibida la manipulación de hardware, conexiones
eléctricas o de red; así como la ingestión de alimentos o bebidas.

III. NORMAS EMPLEADAS


○ No aplica

IV. RECURSOS
○ En el siguiente laboratorio se trabajará con un equipo que cuente VMWare Player
(mínimo versión 12).

V. METODOLOGÍA PARA EL DESARROLLO DE LA TAREA


○ El desarrollo del laboratorio es individual.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 2

VI. PROCEDIMIENTO
● El equipo a utilizar deberá contar con Laravel instalado y MongoDB.
● La aplicación a utilizar será la del laboratorio pasado (postea).
● En MongoDB se deberá habilitar la autorización y agregar el siguiente usuario. Para el
manejo de la autorización puede consultar los documentos oficiales de MongoDB. La
contraseña del usuario tecsup es Virtu@l
use postea
db.createUser(
{
user: "tecsup",
pwd: passwordPrompt(),
roles: [ { role: "readWrite", db: "postea" } ]
}
)

Instalación de Laravel MongoDB


● Antes de proceder debe asegurarse de tener el driver de MongoDB para PHP instalado,
puede revisar el siguiente enlace para su instalación. Si se trabaja con Homestead, no
tiene que hacer nada adicional.
● En Ubuntu Server 20.04, para contar con el driver se necesita instalar unas dependencias
y luego haciendo uso de pecl, se instalará el driver:
$ sudo apt install -y php-pear php-dev
$ sudo pecl install mongodb

● Finalmente agregamos la nueva extensión a la configuración de PHP


$ echo "extension=mongodb.so" | sudo tee -a /etc/php/7.4/cli/php.ini
$ echo "extension=mongodb.so" | sudo tee -a /etc/php/7.4/fpm/php.ini

● Ubíquese en la carpeta de la aplicación (en el laboratorio pasado esta carpeta era


~/Workplace/Laravel/postea/ ), abra la terminal y ejecute el siguiente comando:
$ composer require jenssegers/mongodb

● Al terminar la instalación debemos registrar el servicio en la aplicación de Laravel, para


esto editamos el archivo config/app.php y agregamos la siguiente línea al array
providers.
Jenssegers\Mongodb\MongodbServiceProvider::class,

● Debería quedar de la siguiente forma:


Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 3

Configurando variables de entorno


● Editaremos el archivo .env. Dicho archivo contiene el valor de las variables globales de
nuestra aplicación.
● Nos aseguramos que el valor de APP_NAME sea Postea.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 4

● Actualizamos los datos referentes a la base de datos según la siguiente imagen.

NOTA
Tener en cuenta que se considera que MongoDB está corriendo en el mismo equipo que
Laravel, si no fuera el caso habría que cambiar el valor de DB_HOST.

NOTA
El valor de la variable global APP_KEY es único para cada aplicación de Laravel, por lo
que el valor en la imagen es referencial.

Configurando la conexión a la base de datos


● Con el editor de textos de su elección, deberá agregar al array 'connections' en el
archivo config/database.php la siguiente entrada:
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 5

Creando el modelo Post


● Aunque en el siguiente laboratorio no se trabajará el sistema de sesiones ni el de
autenticación, vamos a desplegar el sistema brindado por Laravel para que más adelante
no tengamos conflictos con nuestros propios códigos.
● Ejecutamos los siguientes comandos estando ubicados en la carpeta de la aplicación.

NOTA
NodeJS y npm deben estar instalados en el sistema operativo.

$ composer require laravel/ui


$ php artisan ui bootstrap --auth
$ npm install && npm run dev

● Para crear el modelo Post basta con ejecutar el siguiente comando:


$ php artisan make:model Post
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 6

● Dicho comando creará un archivo llamado Post.php en la carpeta app, abra dicho archivo
con su editor de elección y cambie el contenido por el siguiente:

● ¿Qué cambios se ha hecho? ¿Por qué se han hecho esos cambios y qué significan?
Consulte la documentación de Laravel y de la extensión de MongoDB:
Se realizan cambios en el modelo de la colección ya que se está utilizando MongoDB el
cual no requiere de una estructura previa.

Creando datos de prueba para el modelo Post

● Haciendo uso de Tinker, genere tres registros dentro de la colección Posts.


$ php artisan tinker

Se realizaron los siguientes registros


>>> $publicacion = App\Post: :create([
... ‘title’ => ‘Publicacion 1’
... ‘image’ => ‘img/imagen1.png’
... ‘content’ => ‘Esta es la publicación número 1’])
=> App\Post{#3052
Title: “Publicacion 1”
image: “img/imagen1.png”
content: “Esta es la publicación número 1”
updated_at: MongoDB\BSON\UTCDateTime{#3370
+“miliseconds”: “1590975194886”,
},
Created_at: MongoDB\BSON\UTCDateTime{#3370},
_id: MongoDB\BSON\ObjectId {#3989
+“oid”: “5ed45ada7a745c6fb0020da2”,
},}
}
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 7

>>> $publicacion2 = App\Post: :create([


... ‘title’ => ‘Publicacion 2’
... ‘image’ => ‘img/imagen2.png’
... ‘content’ => ‘Esta es la publicación número 2’])
=> App\Post{#3052
Title: “Publicacion 2”
image: “img/imagen2.png”
content: “Esta es la publicación número 2”
updated_at: MongoDB\BSON\UTCDateTime{#3843
+“miliseconds”: “1590975787555”,
},
Created_at: MongoDB\BSON\UTCDateTime{#3843},
_id: MongoDB\BSON\ObjectId {#3054
+“oid”: “5ed452b9725444929020da3”,
},
}

>>> $publicacion3 = App\Post: :create([


... ‘title’ => ‘Publicacion 3’
... ‘image’ => ‘img/imagen3.png’
... ‘content’ => ‘Esta es la publicación número 3’])
=> App\Post{#3069
Title: “Publicacion 3”
image: “img/imagen3.png”
content: “Esta es la publicación número 3”
updated_at: MongoDB\BSON\UTCDateTime{#3994
+“miliseconds”: “1590976137879”,
},
Created_at: MongoDB\BSON\UTCDateTime{#3994},
_id: MongoDB\BSON\ObjectId {#3053
+“oid”: “5ed45e8977276459e8020da4”,
},
}

Creando rutas y controladores para el Modelo Post


● Para definir las acciones de nuestro controlador, primero crearemos rutas para dichas
acciones en el archivo routes/web.php, el cual se encarga de enrutar las peticiones
hechas a nuestra aplicación web.
● Actualizamos el contenido de dicho archivo por el siguiente:
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 8

● Luego procedemos a crear nuestro controlador con el siguiente comando:


$ php artisan make:controller PostController

● Dicho comando creará el archivo PostController.php en la carpeta


app/Http/Controllers/, abrir el archivo y modificarlo de la siguiente forma:

● Investigue sobre los cambios hechos en el enrutador y en el controlador, sea específico y


detalle todos los métodos empleados en dichos archivos:
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 9

Los cambios que se realizaron fueron para crear rutas de


autentificación, lo cual habilita la configuración de Laravel.

Creando vistas el Modelo Post


● Dentro de la carpeta resources/views cree los siguientes archivos con los contenidos
dados en las imágenes:

index.blade.php

postUnico.blade.php
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 10

● Comente a grandes rasgos lo que sucede en las plantillas Blade haciendo uso del
navegador web y probando las rutas definidas:
● En la parte de “index.blade.php” se resalta el titulo de la
publicación con la propiedad “title” como referencia a la función
show del controlador, el cual recibe un parámetro id.

● La función de “foreach” es repetir las veces que sea necesario


dependiendo de cuantas publicaciones se hayan pasado.

● En cambio “postUnico.blade.php” no se debera de repetir varias


veces

● Haciendo uso del comando php artisan help, explique todos los comandos utilizados en el
presente laboratorio:
Para poder crear un controlador sin ningún método de debe utilizar la
opción plain.

Php artisan make:controller PostController –plain

Para crear una nueva clase de modelo Eloquent se debe utilizar el siguiente
comando
make:model Create a new Eloquent model class
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 11

Ejercicio Propuesto
● Realice una investigación sobre las convenciones que se debe seguir en Laravel al
momento de definir nuestras vistas, modelos, controladores, etc.
Convenciones que debemos seguir en Laravel
● El nombre de los modelos se escribe en singular, en contraste con las tablas de
la BD que se escriben en plural.
● Los modelos usan notación UpperCamelCase para sus nombres.
● Los nombres de clase de modelo son singulares.
● Los controladores deben estar en singular, sin espacios entre palabras, la
primera letra de cada palabra debe ser mayúscula y deben terminar con la
palabra «Controller».
● los nombres de los recursos del controlador son singulares.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 12

VII. OBSERVACIONES
● Para realizar el laboratorio se utilizó un equipo con conexión a internet y Virtual Box

● Para realizar el laboratorio se revisó el material de la sesión de teoría y la documentación


indicada en este laboratorio.

● Para la instalación de mongodb es requerido el sistema de gestión de paquetes


“Composer”.

● Se puede utilizar mongodb como base de datos principal o como base de datos
secundaria.

VIII. CONCLUSIONES

● Al realizar el laboratorio se utilizo un equipo con conexión a internet y Virtual Box

● Es importante a prender a utilizar las normas de nomenclatura ya que nos ayuda a tener
un código prolijo, entendible y estandarizado.
● Artisan nos permite realizar múltiples tareas necesarias durante el proceso de desarrollo
de una aplicación.
● Laravel permite dividir la lógica de presentación de la lógica de nuestra aplicación a través
de las vistas.
● Se realizo la conexión a MongoDB y se realizaron documentos de prueba en Laravel.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 08 - Laravel Parte II
Página 13

IX. REFERENCIAS

con-f-use. (2018, julio 2). How do I mount shared folders in Ubuntu using VMware tools?
Recuperado de Ask Ubuntu website: https://askubuntu.com/a/1051620

Congleton, N. (2018, septiembre 13). Install And Host Laravel On Ubuntu 18.04 Bionic Beaver
Linux [Wiki]. Recuperado 23 de abril de 2019, de LinuxConfig.org website:
https://linuxconfig.org/install-and-host-laravel-on-ubuntu-18-04-bionic-beaver-linux

djohn. (2017, diciembre 20). Mounting Shared Folders in a Linux Guest [Documentation].
Recuperado 24 de abril de 2019, de VMware Docs website:
https://docs.vmware.com/en/VMware-Workstation-
Pro/15.0/com.vmware.ws.using.doc/GUID-AB5C80FE-9B8A-4899-8186-
3DB8201B1758.html

También podría gustarte