Guía para principiantes sobre cómo configurar un proyecto en Laravel

En este artículo, repasaremos los componentes básicos de Laravel y cómo podemos usar Laravel para configurar un pequeño proyecto.

Laravel es un potente y elegante framework para aplicaciones web PHP que ha ganado gran popularidad entre los desarrolladores por su simplicidad, versatilidad y características poderosas. A lo largo de los años, Laravel se ha convertido en el marco PHP de referencia para proyectos grandes y pequeños.

Prerrequisitos: Empezando con Laravel

Antes de sumergirnos en el desarrollo con Laravel, debemos asegurarnos de tener todos los herramientas y software necesarios instalados. Aquí está lo que necesitaremos:

  • PHP. Laravel se ejecuta en PHP, por lo que el primer paso es asegurarse de que tienes PHP instalado en tu sistema. Si no estás seguro de si PHP está instalado, abre una terminal o símbolo del sistema y escribe php -v. Si PHP está instalado, verás un número de versión. Si no, necesitarás instalarlo.

    Para instalar PHP en tu máquina tenemos varias opciones:

    Instalación local. Puedes instalar PHP directamente en tu computadora. Visita la página de descargas de PHP para obtener la última versión para tu sistema operativo.

    Laravel Homestead. Para una configuración más simplificada, especialmente si eres nuevo en el desarrollo de PHP, considera usar Laravel Homestead. Homestead es una caja Vagrant preconfigurada que proporciona un entorno de desarrollo completo para Laravel. Puedes encontrar instrucciones de instalación aquí.

  • Composer. Laravel utiliza Composer para la gestión de dependencias. Composer es el gestor de dependencias predeterminado de PHP, y es ampliamente utilizado y bien documentado.

  • Instalador de Laravel. Laravel puede ser instalado globalmente en nuestro sistema utilizando el Instalador de Laravel, una herramienta de línea de comandos conveniente que agiliza y simplifica el proceso de creación de nuevos proyectos Laravel. Para instalarlo globalmente en tu sistema, sigue estos pasos:

    1. Abre una terminal o un símbolo del sistema.
    2. Ejecuta el siguiente comando de Composer:
    composer global require laravel/installer
    

    Una vez completada la instalación, asegúrate de que el directorio bin global de Composer esté en tu sistema “PATH” para que puedas ejecutar el comando laravel desde cualquier lugar.

    Si prefieres una alternativa más ligera a Homestead, podrías considerar Laravel Herd. Herd es un entorno de desarrollo local basado en Docker específicamente adaptado para proyectos Laravel. Puedes obtener más información sobre Herd y cómo configurarlo aquí.

Al configurar tu entorno de desarrollo con PHP, Composer y el Instalador de Laravel (o explorar opciones como Homestead o Herd), estarás bien preparado para comenzar tu viaje con Laravel. En las siguientes secciones, repasaremos el proceso de creación de un nuevo proyecto Laravel, explorando su estructura de directorios y configurando el entorno de desarrollo.

Configuración de un Nuevo Proyecto Laravel

Ahora que tenemos nuestro entorno de desarrollo listo, es hora de crear un nuevo proyecto Laravel. Para crear un nuevo proyecto “vacío”, podemos usar el siguiente comando de terminal:

composer create-project --prefer-dist laravel/laravel project-name

project-name debe reemplazarse con el nombre real del proyecto. Este comando descargará la última versión de Laravel y configurará un nuevo directorio de proyecto con todos los archivos y dependencias necesarios.

Estructura de Directorios: Navegando un Proyecto Laravel

Al crear un nuevo proyecto Laravel, nos encontraremos con una estructura de directorios bien organizada. Comprender esta estructura es crucial para un desarrollo efectivo con Laravel. Aquí hay algunos de los directorios clave y sus propósitos:

  • app. Este directorio alberga la lógica central de nuestra aplicación, incluyendo controladores, modelos y proveedores de servicios.
  • bootstrap. Los archivos de arranque y configuración de Laravel residen aquí.
  • config. Los archivos de configuración para varios componentes de nuestra aplicación se pueden encontrar aquí, permitiéndonos encontrar y personalizar configuraciones como conexiones de base de datos y servicios desde un solo punto en el proyecto.
  • Database. En este directorio, definiremos nuestras migraciones y semillas de base de datos para ser utilizadas por el ORM Eloquent de Laravel. Eloquent simplifica la gestión de la base de datos.
  • public. Los recursos accesibles públicamente, como CSS, JavaScript e imágenes, pertenecen aquí. Este directorio también contiene el punto de entrada de nuestra aplicación, el archivo index.php.
  • resources. Los activos sin compilar de nuestra aplicación, como plantillas Blade, Sass y JavaScript, se almacenan aquí.
  • routes. La configuración de enrutamiento de Laravel se gestiona en este directorio.
  • storage. Los archivos temporales y de caché, así como los registros, se almacenan aquí.
  • vendor. Composer gestiona las dependencias de nuestro proyecto en este directorio. Todas las bibliotecas descargadas estarán en este directorio.

Configuración: Configuración de la Base de Datos y Variables de Entorno

Para configurar la conexión a nuestra base de datos, debemos abrir el archivo .env en el directorio raíz del proyecto. Aquí, podemos especificar el tipo de base de datos, host, nombre de usuario, contraseña y nombre de la base de datos. Gracias a Eloquent ORM, Laravel admite múltiples conexiones a bases de datos, lo que lo hace versátil para diversas necesidades de proyectos.

Entendiendo el archivo .env

El archivo .env es donde definimos valores de configuración específicos del entorno, como detalles de conexión a la base de datos, claves de API y otras configuraciones. Echemos un vistazo a un ejemplo simple de lo que podrías encontrar en un archivo .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_username
DB_PASSWORD=my_password

En este ejemplo:

  • DB_CONNECTION especifica el tipo de controlador de base de datos que estamos usando (como MySQL, PostgreSQL, SQLite).
  • DB_HOST especifica el host donde se encuentra nuestro servidor de base de datos.
  • DB_PORT especifica el puerto en el que se está ejecutando el servidor de base de datos.
  • DB_DATABASE especifica el nombre de la base de datos a la que queremos conectarnos.
  • DB_USERNAME y DB_PASSWORD especifican el nombre de usuario y la contraseña necesarios para acceder a la base de datos.

Usando variables de entorno

Es fundamental mantener información confidencial, como las credenciales de la base de datos, seguras. Laravel fomenta el uso de variables de entorno para lograr esto. En lugar de codificar nuestras credenciales en el archivo .env, podemos hacer referencia a ellas en nuestros archivos de configuración.

Por ejemplo, en nuestros archivos de configuración de Laravel (ubicados en el directorio config/), podemos hacer referencia a la configuración de la base de datos de esta manera:

'mysql' => [
    'driver' => env('DB_CONNECTION', 'mysql'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    // ...
],

Aquí, la función env() recupera el valor de la variable de entorno especificada desde el archivo .env. Si la variable no se encuentra, recurre a un valor predeterminado proporcionado como segundo argumento.

Al utilizar archivos de configuración, podemos almacenar datos sensibles en un lugar más seguro y cambiar fácilmente las configuraciones entre entornos (como desarrollo y producción).

Con nuestro proyecto de Laravel creado, directorios organizados y base de datos configurada, estamos listos para comenzar a construir nuestra aplicación web. En las siguientes secciones, nos enfocaremos en enrutamiento, controladores y el trabajo con plantillas Blade para nuestras vistas de frontend.

Enrutamiento, Controladores y Vistas: El Corazón de Tu Aplicación Laravel

En Laravel, el enrutamiento, los controladores y las vistas trabajan juntos para manejar las solicitudes HTTP y renderizar páginas web dinámicas. Entender estos conceptos es esencial para crear aplicaciones web con Laravel.

En pocas palabras, las solicitudes HTTP son recibidas por el enrutador, que luego sabe qué controlador debe manejar la acción. El controlador es responsable de procesar la información y mostrar la información procesada a través de vistas.

Enrutamiento

En Laravel, podemos definir rutas en el archivo routes/web.php. Una definición de ruta básica se ve así:

Route::get('/welcome', function () {
    return view('welcome');
});

Este ejemplo configura una ruta que, al ser accedida, devuelve la vista welcome. Las rutas también se pueden utilizar para invocar acciones de controladores, como mencionamos anteriormente, lo que nos permite organizar el código de manera más eficiente.

Creación de un controlador

Controladores actúan como el puente entre nuestras rutas y la lógica de nuestra aplicación. Para crear un controlador, podemos usar el comando make:controller:

php artisan make:controller YourControllerName

Nuestro nuevo controlador contiene métodos que corresponden a diferentes acciones en nuestra aplicación, como mostrar una página o procesar datos de un formulario.

Vistas y plantillas Blade

Las vistas en Laravel son responsables de presentar los datos de nuestra aplicación a los usuarios. De forma predeterminada, Laravel utiliza un motor de plantillas llamado Blade, que simplifica la creación de vistas dinámicas y reutilizables. Aquí hay un ejemplo de renderizado de una vista en un método de controlador:

public function index()
{
    $data = ['name' => 'John'];
    return view('welcome', $data);
}

En este ejemplo, la vista welcome se renderiza con datos, en este caso, 'name' se pasa a ella.

Blade es un motor de plantillas muy potente que permite la creación de contenido dinámico a través de sentencias condicionales, bucles, etc.

Migración y semillado de bases de datos

El sistema de migración y semillado de bases de datos de Laravel nos permite definir nuestro esquema de base de datos y poblarlo con datos iniciales. Podemos ver las migraciones como cambios de base de datos controlados por versiones, y el semillado como el proceso de agregar datos de muestra.

Las migraciones y el semillado son conceptos súper poderosos que permiten la consistencia de la base de datos en diferentes entornos.

Para crear una migración, podemos usar el comando make:migration:

php artisan make:migration create_table_name

Luego, podemos editar el archivo de migración generado para definir nuestra estructura de tabla y luego usar Artisan para ejecutar la migración:

php artisan migrate

El semillado se usa a menudo para poblar tablas con datos iniciales para pruebas y desarrollo. Para crear semilleros, podemos usar el comando make:seeder y ejecutarlos con:

php artisan db:seed

Creación de Modelos para la Interacción con la Base de Datos

El ORM Eloquent de Laravel simplifica las interacciones con la base de datos permitiéndonos trabajar con las bases de datos como si fueran objetos. Para crear un modelo, usamos el comando make:model:

php artisan make:model YourModelName

Defina la tabla y las relaciones en el modelo para permitir la recuperación y manipulación de datos fácilmente. Por ejemplo, para recuperar todos los registros de una tabla users:

$users = YourModelName::all();

Armados con todo este conocimiento, incorporando enrutamiento, controladores, vistas, migración de base de datos, semillado y modelos, estamos en buen camino para construir aplicaciones web dinámicas con Laravel. En las próximas secciones, profundizaremos en la creación de una aplicación CRUD simple y exploraremos características avanzadas de Laravel.

Creación de una Aplicación CRUD Simple en Laravel

Avancemos en nuestro viaje con Laravel construyendo una aplicación CRUD —en este caso, una sencilla aplicación de registro de libros, donde podamos crear, leer, actualizar y eliminar libros. Este ejercicio práctico nos ayudará a comprender cómo implementar operaciones CRUD en Laravel.

Por motivos de espacio en este artículo, nos enfocaremos solo en crear la página inicial de la aplicación, ¡así que depende de ti completar esta aplicación!

Paso 1: Crear una migración para la tabla de libros

Para generar una migración para la tabla books, utilicemos el siguiente comando:

php artisan make:migration create_books_table

Este comando genera un archivo de migración para crear la tabla books en la base de datos. A continuación, edita el archivo de migración generado que acabamos de crear (database/migrations/YYYY_MM_DD_create_books_table.php) para definir la estructura de la tabla:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBooksTable extends Migration
{
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('author');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('books');
    }
}

En este archivo de migración, definimos la estructura de la tabla books, incluyendo sus columnas (id, title, author, timestamps). Luego, queremos ejecutar la migración para crear la tabla:

php artisan migrate

Este comando ejecuta el archivo de migración y crea la tabla books en la base de datos.

Paso 2: Crear un sembrador para la tabla de libros

A continuación, queremos generar un sembrador para la tabla books para poblarla con algunos datos iniciales:

php artisan make:seeder BooksTableSeeder

Este comando genera un archivo de sembrador para poblar la tabla books con datos iniciales.

Edita el archivo de sembrador (database/seeders/BooksTableSeeder.php) para definir datos de muestra de libros:

use Illuminate\Database\Seeder;

class BooksTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('books')->insert([
            ['title' => 'Book 1', 'author' => 'Author A'],
            ['title' => 'Book 2', 'author' => 'Author B'],
            ['title' => 'Book 3', 'author' => 'Author C'],
        ]);
    }
}

En este archivo de sembrado, definimos datos de muestra de libros que se insertarán en la tabla books. En este caso específico, estamos creando libros del 1 al 3 y autores de la A a la C.

Ejecuta el sembrado para poblar la tabla books:

php artisan db:seed --class=BooksTableSeeder

Este comando ejecuta el archivo de sembrado y llena la tabla books con los datos de muestra definidos.

Paso 3: Crear un controlador

Genera un controlador para gestionar libros:

php artisan make:controller BookController

Este comando genera un archivo de controlador (BookController.php) que contiene métodos para manejar operaciones CRUD relacionadas con libros. Con el controlador creado, centrémonos en implementar métodos CRUD en el BookController. Se encuentra en app/Http/Controllers/BookController.php:

use App\Book; // Importar el modelo Book

public function index()
{
    $books = Book::all();
    return view('books.index', compact('books'));
}

public function create()
{
    return view('books.create');
}

public function store(Request $request)
{
    $book = new Book;
    $book->title = $request->input('title');
    $book->author = $request->input('author');
    $book->save();

    return redirect()->route('books.index');
}

// Implementar métodos de edición, actualización, visualización y eliminación de manera similar

En este archivo de controlador, definimos métodos para manejar operaciones CRUD relacionadas con libros. Por ejemplo, el método index recupera todos los libros de la base de datos y los pasa a la vista index, mientras que el método store crea un nuevo registro de libro basado en los datos enviados a través de un formulario. El método create() se encarga de mostrar el formulario para crear un nuevo registro de libro. Cuando un usuario navega a la ruta asociada con este método, Laravel ejecutará esta función y devolverá una vista llamada books.create.

Paso 4: Crear vistas

Crear vistas para listar, crear y editar libros en la carpeta resources/views.

Ejemplo de Vista (create.blade.php):

@extends('layout')

@section('content')
  <h1>Create a New Book</h1>
  <form method="POST" action="{{ route('books.store') }}">
    @csrf
    <div class="form-group">
      <label for="title">Title</label>
      <input type="text" name="title" class="form-control" id="title" placeholder="Enter book title">
    </div>
    <div class="form-group">
      <label for="author">Author</label>
      <input type="text" name="author" class="form-control" id="author" placeholder="Enter author name">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
  <a href="{{ route('books.index') }}">Back to the list</a>
@endsection

En este ejemplo, la vista create contiene un formulario para agregar un nuevo libro. El formulario envía datos al método store del BookController. La directiva @csrf genera un token CSRF para proteger contra falsificación de solicitudes entre sitios.

Con este ejemplo, deberías ser capaz de implementar los métodos del controlador y las vistas para el resto de las operaciones CRUD por ti mismo, ¡así que ponte manos a la obra!

Conclusión

En este artículo, analizamos lo básico de una aplicación Laravel: cómo podemos usar la línea de comandos para ayudarnos a construir una aplicación, la estructura de una aplicación Laravel, y cómo crear una aplicación CRUD en Laravel.

I hope this article was useful and that you’re now capable of using Laravel to create your applications and expand the information here with more advanced topics. More information on Laravel can be found at the official Laravel website.

Source:
https://www.sitepoint.com/laravel-project-setup-beginners-guide/