Попередня підготовка даних у Laravel за допомогою View Creators

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 04 січня, 2025
Відкрийте для себе, як View Creators у Laravel можуть оптимізувати підготовку даних та підвищити продуктивність вашого застосунку. Чи готові ви дізнатися, як вони допоможуть у створенні динамічного меню вашої програми?

Креатори Views у Laravel дозволяють вам готувати дані одразу після створення виду, ще на етапі до роботи View Composers. Це робить їх ідеальними для налаштування необхідних даних або оптимізації продуктивності.

use Illuminate\Support\Facades\View;
// Реєстрація View Creator
View::creator('dashboard', DashboardCreator::class);

Розглянемо практичний приклад управління динамічним меню програми:

<?php

namespace App\View\Creators;

use App\Services\MenuService;
use Illuminate\View\View;
use Illuminate\Support\Facades\Auth;

class ApplicationMenuCreator
{
    protected $menuService;

    public function __construct(MenuService $menuService)
    {
        $this->menuService = $menuService;
    }

    public function create(View $view)
    {
        $user = Auth::user();

        $view->with([
            'mainMenu' => $this->menuService->getMainMenu($user),
            'quickActions' => $this->menuService->getQuickActions($user),
            'recentItems' => $this->menuService->getRecentItems($user),
            'notifications' => $this->menuService->getPendingNotifications($user)
        ]);
    }
}

// У вашому AppServiceProvider
public function boot()
{
    View::creator('layouts.app', ApplicationMenuCreator::class);
}

// Використання в layouts/app.blade.php
<div class="sidebar">
    <nav>
        @foreach($mainMenu as $menuItem)
            <a href="{{ $menuItem['url'] }}" class="{{ $menuItem['active'] ? 'active' : '' }}">
                {{ $menuItem['label'] }}
            </a>
        @endforeach
    </nav>

    @if(count($quickActions))
        <div class="quick-actions">
            @foreach($quickActions as $action)
                <button onclick="handleAction('{{ $action['id'] }}')">
                    {{ $action['label'] }}
                </button>
            @endforeach
        </div>
    @endif
</div>

Креатори Views забезпечують спрощену підготовку даних для ваших видів, гарантуючи доступність критично важливої інформації відразу після створення виду