Laravel Livewire: Tutorial de carga de archivos
- Explicaré paso a paso la carga de archivos de Laravel Livewire tutorial.
- Podrá ver el ejemplo de carga del archivo Laravel Livewire.
- Le ayudaremos a dar un ejemplo de carga de archivos con Laravel Livewire.
- Usaremos el archivo de carga de la tienda laravel livewire.
En este tutorial, crearemos un ejemplo simple de carga de archivos usando laravel livewire. puede usar Laravel Livewire con las versiones de Laravel 6, Laravel 7 y Laravel 8.
Livewire es un marco de pila completo para el marco de Laravel que simplifica la construcción de interfaces dinámicas, sin dejar la comodidad de Laravel. Si está usando Livewire con Laravel, entonces despreocúpese por escribir código jquery ajax, Livewire le ayudará a escribir código jquery ajax de forma muy simple usando PHP. Sin actualización de página, la validación de laravel funcionará, el formulario se enviará, etc.
Aquí, le daré un ejemplo muy simple de cómo crear un formulario de carga de archivos con título y nombre y almacenaré esos datos en la base de datos sin actualizar la página y sin demasiadas líneas de código en el archivo blade. Usaremos solo el paquete livewire / livewire.
Paso 1: Instale Laravel 8
En primer lugar, necesitamos obtener una nueva aplicación de la versión Laravel 8 usando el siguiente comando, así que abra su terminal O el símbolo del sistema y ejecute el siguiente comando:
composer create-project --prefer-dist laravel/laravel blog
Paso 2: Crear la migración y el modelo
Aquí necesitamos crear una migración de base de datos para la tabla de archivos y también, crearemos un modelo para la tabla de archivos.
php artisan make:migration create_files_table
Migración:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateFilesTable extends Migration { public function up() { Schema::create('files', function (Blueprint $table) { $table->id(); $table->string('title'); $table->string('name'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('files'); } }
Emigrar:
php artisan migrate
Ahora crearemos un modelo de Archivo usando el siguiente comando:
php artisan make: modelo de archivo
App/Models/File.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class File extends Model { use HasFactory; protected $fillable = [ 'title','name' ]; }
Paso 3: Instale Livewire
Ahora en este paso, simplemente instalaremos livewire en nuestra aplicación laravel 8 usando el siguiente comando:
composer require livewire/livewire
Paso 4: Crear componente
Ahora aquí crearemos un componente Livewire usando su comando. Así que ejecute el siguiente comando para crear un componente de formulario de carga de archivos.
php artisan make:livewire file-upload
Ahora crearon archivos en ambas rutas:
app/Http/Livewire/FileUpload.php resources/views/livewire/file-upload.blade.php
Ahora actualizaremos ambos archivos como se muestra a continuación para nuestro formulario de contacto.
app/Http/Livewire/FileUpload.php
<?php namespace App\Http\Livewire; use Livewire\Component; use Livewire\WithFileUploads; use App\Models\File; class FileUpload extends Component { use WithFileUploads; public $file, $title; public function submit() { $validatedData = $this->validate([ 'title' => 'required', 'file' => 'required', ]); $validatedData['name'] = $this->file->store('files', 'public'); File::create($validatedData); session()->flash('message', 'File successfully Uploaded.'); } public function render() { return view('livewire.file-upload'); } }
resources/views/livewire/file-upload.blade.php
<form wire:submit.prevent="submit" enctype="multipart/form-data"> <div> @if(session()->has('message')) <div class="alert alert-success"> {{ session('message') }} </div> @endif </div> <div class="form-group"> <label for="exampleInputName">Title:</label> <input type="text" class="form-control" id="exampleInputName" placeholder="Enter title" wire:model="title"> @error('title') <span class="text-danger">{{ $message }}</span> @enderror </div> <div class="form-group"> <label for="exampleInputName">File:</label> <input type="file" class="form-control" id="exampleInputName" wire:model="file"> @error('name') <span class="text-danger">{{ $message }}</span> @enderror </div> <button type="submit" class="btn btn-success">Save</button> </form>
Paso 5: Crear ruta
Ahora crearemos una ruta para llamar a nuestro ejemplo, así que agreguemos una nueva ruta al archivo web.php como se muestra a continuación:
Route::get('file-upload', function () { return view('default'); });
Paso 6: Crear archivo de vista
Aquí, crearemos un archivo blade para la ruta del formulario de llamada. en este archivo, usaremos @livewireStyles, @livewireScripts y @livewire (“formulario de contacto”). así que añádalo.
resources/views/default.blade.php
<!DOCTYPE html> <html> <head> <title>Laravel Livewire Example - raviyatechnical</title> @livewireStyles <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> </head> <body> <div class="container"> <div class="card"> <div class="card-header"> Laravel Livewire Example - raviyatechnical </div> <div class="card-body"> @livewire('file-upload') </div> </div> </div> </body> @livewireScripts </html>
Ahora puede ejecutar usando el siguiente comando:
php artisan serve
Abrir debajo de la URL:
http://localhost:8000/file-upload