Динамічні оновлення сторінок за допомогою фрагментів Laravel Blade

Перекладено ШІ 0 Laravel News 13 грудня, 2024

Ви готові покращити інтерактивність своїх веб-додатків на Laravel? У нашій статті ми детально розглянемо, як використовувати Blade Fragments для ефективних часткових оновлень сторінок, що ідеально підходять для інтеграції з htmx чи Turbo

Blade Fragments дозволяють часткове оновлення сторінки, повертаючи конкретні секції шаблонів. Це ідеальне рішення для використання з htmx або Turbo фреймворками.

# Використання Blade Fragments

Основне визначення і використання фрагмента:

// У вашому Blade шаблоні
@fragment('notification-list')
    <div class="notifications">
        @foreach($notifications as $notification)
            <div class="alert">
                {{ $notification->message }}
            </div>
        @endforeach
    </div>
@endfragment
 
// У вашому контролері
return view('dashboard')
    ->fragment('notification-list');

# Реалізація у реальному житті

Приклад роботи системи сповіщень:

<?php

namespace App\Http\Controllers;

use App\Models\Notification;
use Illuminate\Http\Request;

class NotificationController extends Controller
{
    public function store(Request $request)
    {
        $notification = Notification::create([
            'user_id' => auth()->id(),
            'message' => $request->message,
            'type' => $request->type
        ]);

        if ($request->hasHeader('HX-Request')) {
            return view('notifications.index', [
                'notifications' => auth()->user()->notifications()->latest()->get()
            ])->fragmentIf(
                $request->hasHeader('HX-Request'),
                'notification-list'
            );
        }

        return back();
    }

    public function clear(Request $request)
    {
        auth()->user()->notifications()->delete();

        return view('notifications.index', [
            'notifications' => collect()
        ])->fragment('notification-list');
    }
}

Структура шаблону:

<!-- notifications/index.blade.php -->
<div class="container">
    @fragment('notification-list')
        <div class="notification-wrapper">
            @forelse($notifications as $notification)
                <div class="alert alert-{{ $notification->type }}">
                    {{ $notification->message }}
                    <span class="timestamp">
                        {{ $notification->created_at->diffForHumans() }}
                    </span>
                </div>
            @empty
                <p>Немає сповіщень</p>
            @endforelse
        </div>
    @endfragment
</div>

Blade Fragments демонструють прихильність Laravel до сучасної інтерактивної веб-розробки, пропонуючи серверне рішення, яке бездоганно інтегрується з методами прогресивного покращення, зберігаючи при цьому простоту, яку очікують розробники

Популярні

Інше, що варто прочитати

12 Оновлено 03 червня, 2026

Удосконалюйте свої проєкти Laravel за допомогою справжнього штучного інтелекту для кодування з Laravel Boost!

Готові підняти свій робочий процес у Laravel на новий рівень? У цій статті я розгляну Laravel Boost, інноваційний AI-допомічник для програмування, який зробить вашу розробку швидшою та продуктивнішою

18 Оновлено 03 червня, 2026

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

21 Оновлено 03 червня, 2026

Створення MCP-серверів на PHP

Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту