Динамічні оновлення сторінок за допомогою фрагментів 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 до сучасної інтерактивної веб-розробки, пропонуючи серверне рішення, яке бездоганно інтегрується з методами прогресивного покращення, зберігаючи при цьому простоту, яку очікують розробники

Популярні

Logomark Logotype

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

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

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!