3-1-Blade en Laravel
Blade en Laravel + Componentes
Blade es el motor de plantillas de Laravel que ofrece una sintaxis elegante y potente para trabajar con vistas. Aquí te presento una guía estructurada con los conceptos esenciales y el uso de componentes.
1. Sintaxis Básica de Blade
A. Mostrar Variables
{{ $variable }} // Escapa HTML automáticamente
{!! $html !!} // Sin escape (para HTML seguro)B. Estructuras de Control
Condicionales
@if($condition)
// Contenido
@elseif($anotherCondition)
// Contenido
@else
// Contenido
@endif
@unless($condition) // Equivalente a if(!$condition)
// Contenido
@endunlessBucles
@for($i = 0; $i < 10; $i++)
// Contenido
@endfor
@foreach($items as $item)
{{ $item->name }}
@endforeach
@forelse($items as $item) // Maneja arrays vacíos
{{ $item->name }}
@empty
<p>No hay items</p>
@endforelse2. Layouts y Herencia
A. Layout Principal (layouts/app.blade.php)
<!DOCTYPE html>
<html>
<head>
<title>@yield('title')</title>
@stack('styles') <!-- Para CSS específico -->
</head>
<body>
@include('partials.header')
<div class="content">
@yield('content')
</div>
@include('partials.footer')
@stack('scripts') <!-- Para JS específico -->
</body>
</html>B. Vista que Extiende el Layout
@extends('layouts.app')
@section('title', 'Página de Inicio')
@section('content')
<h1>Contenido Principal</h1>
@endsection
@push('scripts')
<script src="/custom.js"></script>
@endpush3. Componentes en Blade
A. Crear un Componente
php artisan make:component Alert📌 Estructura generada:
app/View/Components/Alert.php(Clase)resources/views/components/alert.blade.php(Vista)
B. Componente Básico (Alert.php)
namespace App\View\Components;
use Illuminate\View\Component;
class Alert extends Component
{
public $type;
public function __construct($type = 'info')
{
$this->type = $type;
}
public function render()
{
return view('components.alert');
}
}C. Vista del Componente (alert.blade.php)
<div class="alert alert-{{ $type }}">
{{ $slot }} <!-- Contenido pasado al componente -->
</div>D. Uso del Componente
<x-alert type="success">
¡Operación exitosa!
</x-alert>E. Componentes con Slots Nombrados
<!-- resources/views/components/card.blade.php -->
<div class="card">
<div class="card-header">
{{ $title }}
</div>
<div class="card-body">
{{ $slot }}
</div>
</div>
<!-- Uso -->
<x-card>
@slot('title') Título Personalizado @endslot
Contenido del card...
</x-card>4. Directivas Personalizadas
A. Registrar en AppServiceProvider
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('d/m/Y H:i'); ?>";
});
}B. Uso en Vistas
@datetime($post->created_at)5. Includes y Fragmentos
A. Incluir Sub-vistas
@include('partials.header', ['title' => 'Inicio'])B. Fragmentos Reutilizables
<!-- partials/buttons.blade.php -->
@props(['type' => 'submit'])
<button type="{{ $type }}" {{ $attributes }}>
{{ $slot }}
</button>
<!-- Uso -->
<x-buttons class="btn-primary">Enviar</x-buttons>6. Tabla Comparativa: Blade vs Componentes
| Característica | Blade Clásico | Componentes |
|---|---|---|
| Reutilización | @include o @extends | Clases + plantillas encapsuladas |
| Lógica | Directivas simples | Lógica PHP en clases |
| Props | Variables pasadas manualmente | Props declaradas en clase |
| Slots | No nativo | Slots y slots nombrados |
| Rendimiento | Ligero | Optimizado con caché |
7. Consejos Avanzados
Atributos Dinámicos:
<x-button {{ $attributes->merge(['class' => 'btn']) }}>Componentes Anónimos (Laravel 8+):
php artisan make:component forms.input --inlineAcceder a Atributos:
{{ $attributes->get('class') }}
8. Ejemplo Completo: Sistema de Notificaciones
Componente (Notification.php)
public $type;
public $message;
public function __construct($type = 'info', $message = '')
{
$this->type = $type;
$this->message = $message;
}Vista (notification.blade.php)
<div class="notification notification-{{ $type }}">
{{ $message ?? $slot }}
</div>Uso
<x-notification type="error" message="Error crítico"/>
<!-- O -->
<x-notification type="success">
Registro completado!
</x-notification>Documentación Oficial:
Con esta guía dominarás Blade y componentes para crear vistas mantenibles y escalables en Laravel. ¡A codear! 🚀
Comentarios
Publicar un comentario