Ir al contenido principal

Laravel desde cero Pte. I - Primeros pasos

Laravel 8 desde cero Parte I - Primeros pasos

Laravel 8

Conocimientos mínimos para modificaciones en Laravel

Se recomienda tener conocimientos en HTML, CSS, PHP, MVC y JavaScript.
De lo contrario resultará un poco difícil entender los archivos que usa Laravel. 
Y mucho más modificarlos. Sin embargo mientras se use google bien se puede hacer, obvio hay que estudiar el doble. :D

Requisitos previos antes de instalar laravel

Previamente debemos tener instalado XAMPP, WAMPP o MAMPP según SO y preferencia.
Y por supuesto un editor para código según gusto propio.
Hay que descargar e instalar también:
Composer:
NodeJs:

Configuraciones en Windows para el correcto funcionamiento de Composer y NodeJS.

Debemos ir a propiedades del sistema y en Opciones avanzadas, Variables del sistema.
Y en Path añadimos los directorios en mi caso:

D:\xampp\php
C:\ProgramData\ComposerSetup\bin
C:\Users\NameUser\AppData\Roaming\Composer\vendor\bin
Igual a:
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
C:\Program Files\nodejs\

Instalación y creación del proyecto en Laravel

Instalación

Para la instalación de Laravel uso el comando: 
composer global require laravel/installer

Creación del proyecto en Laravel

1.1.- laravel new nombreproyecto

o usando composer directamente:

1.2.- composer create-project --prefer-dist laravel/laravel nombreproyecto "8.*"

Donde 'nombreproyecto' es el nombre de la carpeta que almacena el proyecto.
Y 8.* es la version que usamos en este proyecto.

2.- cd nombreproyecto
3.- composer require laravel/ui
4.- php artisan ui:auth

Donde 'auth': instala los archivos y carpetas base para una zona que exija comprobación de correo.
Por lo cual el auth se usa para proyectos que requieran registro, y/o zonas seguras, generalmente según el roll del usuario.
Sin embargo aún cuando no se necesite registro, recomiendo el uso de auth, ya que crea más recursos que podemos utilizar, y basta con hacer unas simples modificaciones, para omitir la autenticación, lo cual se detalla en "Laravel 8 desde cero Parte IV - Creando nuestras vistas", bajo el título: 'Sin el uso de autenticación (pero si se creó con auth)'

Al usar 'auth': 

En la carpeta Resources\Views\, encontraremos los archivos:
welcome.blade.php (única vista creada sin usar auth), home.blade.php;
Layouts\app.blade.php; ( layouts = diseño ), es aquí donde creamos nuestras plantillas para reutilizar.
Auth\login.blade.phpAuth\register.blade.phpAuth\verify.blade.php;
Auth\Passwords\confirm.blade.phpAuth\Passwords\email.blade.php, y Auth\Passwords\reset.blade.php.

Observaciones: 

  • Vemos como los archivos terminan en blade.php, este es el formato para la extensión de los archivos que usa Laravel tanto en las vistas ( Resources\Views ), como en los diseños ( Layouts ).
  • Aunque blade se traduce como espada generalmente, también significa hoja ( como la hoja de la espada ), lo cual se identifica más con el uso que se le da en laravel, ya que corresponde a la vista o diseño de una página ( sinónimo de hoja ).

El siguiente comando es para el uso de las herramientas de laravelcollective. Pero es opcional.

5.- composer require laravelcollective/html

Modificaciones del archivo .env

APP_NAME=Nombredelaaplicacionsinespacios
APP_URL=http://localhost

Para la base de datos (nombredelabasededatos crear en mi caso en phpmyadmin)

Si se tiene nombre de usuario y contraseña para la base de datos hay que colocarla.
Igualmente si la base de datos no es mysql, se debe especificar la usada.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombredelabasededatos
DB_USERNAME=root
DB_PASSWORD=
QUEUE_CONNECTION=database

Para la autenticación de correo, necesitamos una cuenta en Mailtrap, y modificamos:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=código de nombre que provee Mailtrap
MAIL_PASSWORD=código de contraseña que provee Mailtrap
MAIL_ENCRYPTION=tls

Los datos que provee Mailtrap están en Inboxes => Settings.

Modifico también:
MAIL_FROM_ADDRESS=emailpru@desde.com
MAIL_FROM_NAME="${APP_NAME}"

Ejecutando el servidor de Laravel para ver proyecto

Como expliqué anteriormente podemos crear un proyecto con autorización o sin ella.
Para ver el proyecto ejecutamos en la carpeta del proyecto el comando:
php artisan serve
Hasta el momento sin autorización veremos:

Y con autorización veremos:

Como observamos la diferencia con la autorización es Login y Register, en la esquina superior derecha.

Por defecto Laravel nos crea tanto el modelo ( App\Models\User.php ), como la migración ( Database\Migrations\fecha_number_create_user_table ).

Si en este momento tratamos de ingresar (Login) o registrarnos (Register); nos provocará un error.

Si usamos tablas, es necesario tener activo el motor de las mismas, si vamos a acceder a ellas, en mi caso en XAMPP, MySQL. Ya sea por migración (php artisan migrate) o por server (php artisan serve).

Es necesario crear las tablas de la base de datos previamente creada y especificada en el archivo .env (como se explicó anteriormente. DB_DATABASE=nombredelabasededatos), y ejecutar:

php artisan migrate

Este comando crea la(s) tabla(s), que tengan su modelo y migración, por el momento solo seria User.

Lo cual nos permite registrarnos e ingresar, sin embargo no envía correo para verificación, es decir que no exige la autenticación.

Modificaciones para exigir la autenticación de correo

Para lo cual vamos al archivo: App\Models\User.php
Agregamos de no tenerlo:

use Illuminate\Contracts\Auth\MustVerifyEmail;

Y en la declaración de la clase modificamos así:

class User extends Authenticatable implements MustVerifyEmail

Después en el archivo Routes\web.php (Archivo que contiene las rutas de nuestras vistas, y que veremos más a fondo al inicio de la parte III)

Remplazamos:        Auth::routes();
Con:                        Auth::routes(['verify' => true]);

Hecho esto al registrarse, envía un correo de verificación a la cuenta Mailtrap que configuramos.

Observaciones:

Hasta aquí tenemos un sistema de registro e ingreso, con verificación de correo, lo cual se enfoca en el registro.

Sin embargo el idioma por defecto es ingles, si queremos otro(s) idioma(s), debemos hacer algunas modificaciones. (Ver: Laravel 8 desde cero Parte II - Creando middleware para Idiomas )

También falta personalizar las vistas, diseños y estilos a nuestro antojo, lo cual se usa sin y con registro (Ver: Laravel 8 desde cero Parte III - Adaptando diseños (layouts), vistas (views) y estilos).

Comentarios