<? phpukraine ДОКУМЕНТАЦІЯ
Пошук по платформі
Документація українською

Переклад офіційної документації українською. Кожен розділ показує стан готовності: недоперекладене позначене відкрито, а не приховане.

ВЕРСІЯ
АКТУАЛЬНА Актуальний реліз. Переклад наздоганяє оригінал, розділи з низьким відсотком позначені у змісті.
ОСНОВИ · ПЕРЕКЛАДЕНО оновлено 11 вересня 2026

Views · Laravel

Вступ

Повертати цілі HTML-документи рядками прямо з маршрутів і контролерів непрактично. На щастя, представлення (views) дають зручний спосіб тримати весь HTML в окремих файлах.

Представлення відокремлюють логіку контролера / застосунку від логіки відображення і зберігаються в каталозі resources/views. У Laravel шаблони представлень зазвичай пишуться шаблонною мовою Blade. Просте представлення може виглядати так:

<!-- Представлення зберігається у resources/views/greeting.blade.php -->

<html>
    <body>
        <h1>Hello, {{ $name }}</h1>
    </body>
</html>

Оскільки це представлення зберігається у resources/views/greeting.blade.php, повернути його можна глобальним хелпером view:

Route::get('/', function () {
    return view('greeting', ['name' => 'James']);
});

Примітка Шукаєте більше інформації про те, як писати шаблони Blade? Почніть із повної документації по Blade.

Написання представлень на React / Svelte / Vue

Замість того щоб писати фронтенд-шаблони на PHP через Blade, багато розробників надають перевагу React, Svelte або Vue. Laravel робить це безболісним завдяки Inertia - бібліотеці, яка легко звʼязує ваш фронтенд на React / Svelte / Vue з бекендом на Laravel без типових складнощів побудови SPA.

Наші стартові набори для React, Svelte та Vue - чудова відправна точка для вашого наступного Laravel-застосунку на Inertia.

Створення та рендеринг представлень

Створити представлення можна, помістивши файл із розширенням .blade.php у каталог resources/views вашого застосунку, або за допомогою Artisan-команди make:view:

php artisan make:view greeting

Розширення .blade.php повідомляє фреймворку, що файл містить шаблон Blade. Шаблони Blade містять HTML, а також директиви Blade, які дозволяють легко виводити значення, створювати конструкції «if», ітеруватися по даних тощо.

Створене представлення можна повернути з маршруту або контролера застосунку глобальним хелпером view:

Route::get('/', function () {
    return view('greeting', ['name' => 'James']);
});

Представлення також можна повертати через фасад View:

use Illuminate\Support\Facades\View;

return View::make('greeting', ['name' => 'James']);

Як бачите, перший аргумент, переданий хелперу view, відповідає імені файлу представлення в каталозі resources/views. Другий аргумент - масив даних, які мають бути доступні представленню. У цьому випадку ми передаємо змінну name, яка виводиться в представленні за допомогою синтаксису Blade.

Вкладені каталоги представлень

Представлення можуть лежати у підкаталогах каталогу resources/views. Для звернення до вкладених представлень використовується «крапкова» нотація. Наприклад, якщо ваше представлення зберігається у resources/views/admin/profile.blade.php, повернути його з маршруту / контролера застосунку можна так:

return view('admin.profile', $data);

Попередження Імена каталогів представлень не повинні містити символ ..

Створення першого доступного представлення

Метод first фасаду View створює перше представлення, яке існує в заданому масиві представлень. Це може бути корисно, якщо ваш застосунок чи пакет дозволяє кастомізувати або перевизначати представлення:

use Illuminate\Support\Facades\View;

return View::first(['custom.admin', 'admin'], $data);

Перевірка, чи існує представлення

Якщо вам потрібно визначити, чи існує представлення, скористайтеся фасадом View. Метод exists поверне true, якщо представлення існує:

use Illuminate\Support\Facades\View;

if (View::exists('admin.profile')) {
    // ...
}

Передавання даних у представлення

Як ви бачили в попередніх прикладах, у представлення можна передати масив даних, щоб зробити ці дані доступними в ньому:

return view('greetings', ['name' => 'Victoria']);

Коли інформація передається таким чином, дані мають бути масивом пар ключ / значення. Надавши дані представленню, ви можете звертатися до кожного значення всередині представлення за його ключем, наприклад <?php echo $name; ?>.

Як альтернатива передаванню цілого масиву даних у функцію-хелпер view, ви можете використати метод with, щоб додати окремі частини даних до представлення. Метод with повертає екземпляр обʼєкта представлення, тож ви можете продовжити ланцюжок методів перед тим, як повернути представлення:

return view('greeting')
    ->with('name', 'Victoria')
    ->with('occupation', 'Astronaut');

Спільні дані для всіх представлень

Іноді потрібно передати дані всім представленням, які рендерить ваш застосунок. Це робиться методом share фасаду View. Зазвичай виклики share розміщують у методі boot сервіс-провайдера. Ви можете додати їх у клас App\Providers\AppServiceProvider або згенерувати окремий сервіс-провайдер для них:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        // ...
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        View::share('key', 'value');
    }
}

View-композери

View-композери - це колбеки або методи класів, які викликаються під час рендерингу представлення. Якщо у вас є дані, які треба привʼязувати до представлення щоразу, коли воно рендериться, view-композер допоможе зібрати цю логіку в одному місці. Особливо вони корисні, коли одне й те саме представлення повертається з кількох маршрутів чи контролерів застосунку і завжди потребує певної порції даних.

Зазвичай view-композери реєструються в одному з сервіс-провайдерів застосунку. У цьому прикладі припустимо, що цю логіку міститиме App\Providers\AppServiceProvider.

Для реєстрації view-композера скористаємося методом composer фасаду View. Laravel не має каталогу за замовчуванням для view-композерів на основі класів, тож ви вільні організовувати їх як заманеться. Наприклад, можна створити каталог app/View/Composers для всіх view-композерів застосунку:

<?php

namespace App\Providers;

use App\View\Composers\ProfileComposer;
use Illuminate\Support\Facades;
use Illuminate\Support\ServiceProvider;
use Illuminate\View\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        // ...
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        // Композери на основі класів...
        Facades\View::composer('profile', ProfileComposer::class);

        // Композери на основі замикань...
        Facades\View::composer('welcome', function (View $view) {
            // ...
        });

        Facades\View::composer('dashboard', function (View $view) {
            // ...
        });
    }
}

Тепер, коли композер зареєстровано, метод compose класу App\View\Composers\ProfileComposer виконуватиметься щоразу, коли рендериться представлення profile. Погляньмо на приклад класу композера:

<?php

namespace App\View\Composers;

use App\Repositories\UserRepository;
use Illuminate\View\View;

class ProfileComposer
{
    /**
     * Create a new profile composer.
     */
    public function __construct(
        protected UserRepository $users,
    ) {}

    /**
     * Bind data to the view.
     */
    public function compose(View $view): void
    {
        $view->with('count', $this->users->count());
    }
}

Як бачите, всі view-композери резолвляться через контейнер сервісів, тож у конструкторі композера ви можете вказати через type-hint будь-які потрібні залежності.

Привʼязування композера до кількох представлень

Ви можете привʼязати view-композер одразу до кількох представлень, передавши масив представлень першим аргументом методу composer:

use App\Views\Composers\MultiComposer;
use Illuminate\Support\Facades\View;

View::composer(
    ['profile', 'dashboard'],
    MultiComposer::class
);

Метод composer також приймає символ * як шаблон підстановки, що дозволяє привʼязати композер до всіх представлень:

use Illuminate\Support\Facades;
use Illuminate\View\View;

Facades\View::composer('*', function (View $view) {
    // ...
});

View-креатори

View-«креатори» дуже схожі на view-композери, проте виконуються одразу після створення екземпляра представлення, а не чекають моменту, коли представлення ось-ось відрендериться. Щоб зареєструвати view-креатор, використайте метод creator:

use App\View\Creators\ProfileCreator;
use Illuminate\Support\Facades\View;

View::creator('profile', ProfileCreator::class);

Оптимізація представлень

За замовчуванням шаблони представлень Blade компілюються на вимогу. Коли виконується запит, який рендерить представлення, Laravel визначає, чи існує скомпільована версія представлення. Якщо файл існує, Laravel перевіряє, чи нескомпільоване представлення змінювалося пізніше за скомпільоване. Якщо скомпільованого представлення немає або нескомпільоване було змінене, Laravel перекомпілює представлення.

Компіляція представлень під час запиту може трохи негативно впливати на продуктивність, тому Laravel надає Artisan-команду view:cache, яка заздалегідь компілює всі представлення, що використовує ваш застосунок. Для вищої продуктивності варто запускати цю команду як частину процесу деплою:

php artisan view:cache

Щоб очистити кеш представлень, скористайтеся командою view:clear:

php artisan view:clear
ЯК ЦЯ СТОРІНКА ВИГЛЯДАЄ В ПОШУКУ
phpukraine.com/docs/laravel/views
Views | Документація Laravel українською
Views у Laravel 13.x: переклад офіційної документації українською. Оновлено 11 вересня 2026. Приклади коду, пояснення та посилання на питання зі співбесід.
Стан перекладу

Перекладаємо з офіційної документації, розділ за розділом, і не ховаємо недоперекладене. Помітили неточність у терміні чи реченні: напишіть, виправимо.

90%
Готовності
10
У роботі
0
Ще не перекладено
Глосарій термінів