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