РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
64 of 1392 menu

Метод creator

Метод creator класса View применяется для регистрации коллбэка, который будет вызван в момент создания объекта представления. Первым параметром передаётся имя представления, вторым - замыкание или имя класса. Замыкание принимает экземпляр View, что позволяет модифицировать данные представления до его рендеринга.

Синтаксис

<?php View::creator($view, $callback); ?>

Пример

Давайте зарегистрируем коллбэк для представления 'profile', который будет добавлять текущее время в данные представления:

<?php namespace AppProviders; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot(): void { View::creator('profile', function ($view) { $view->with('currentTime', now()->toDateTimeString()); }); } } ?>

Пример

Зарегистрируем коллбэк для всех представлений в папке 'admin' с помощью звёздочки:

<?php namespace AppProviders; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot(): void { View::creator('admin.*', function ($view) { $view->with('adminLayout', 'default'); $view->with('adminTheme', 'dark'); }); } } ?>

Пример

Используем класс вместо замыкания для обработки нескольких представлений:

<?php namespace App\View\ViewCreator; use Illuminate\Contracts\View\View; class ProfileCreator { public function create(View $view): void { $view->with('userRole', 'admin'); $view->with('userPermissions', ['read', 'write', 'delete']); } } ?>
<?php namespace AppProviders; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; use App\View\ViewCreator\ProfileCreator; class AppServiceProvider extends ServiceProvider { public function boot(): void { View::creator(['profile', 'dashboard'], ProfileCreator::class); } } ?>

Пример

Пример использования созданного представления с переданными данными:

<div> <h1>User Profile</h1> <p>Current time: {{ $currentTime ?? 'Not set' }}</p> <p>User role: {{ $userRole ?? 'guest' }}</p> <p>Permissions: {{ implode(', ', $userPermissions ?? []) }}</p> </div>
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ProfileController extends Controller { public function show() { return view('profile'); } } ?>

Результат выполнения кода:

<div> <h1>User Profile</h1> <p>Current time: 2026-09-08 14:30:25</p> <p>User role: admin</p> <p>Permissions: read, write, delete</p> </div>

Смотрите также

  • метод composer,
    который регистрирует коллбэк для компоновки представления
  • метод share,
    который делает данные доступными для всех представлений
  • метод extends,
    который указывает на расширение шаблона
  • метод section,
    который определяет секцию в шаблоне
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить