Версія фреймворка: 8.x

Перегляди

Створення Views

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

Представлення містять HTML, який обслуговує ваша програма, та відокремлюють логіку контролера / програми від логіки презентації. Перегляди зберігаються вresources/viewsкаталог. Простий Шаблон може виглядати приблизно так:

<!-- View stored in 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']);
});

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

Представлення також можуть бути вкладені в підкаталогиresources/viewsкаталог. Позначення "крапка" може використовуватися для посилання на вкладені View. Наприклад, якщо ваш Шаблон зберігається вresources/views/admin/profile.blade.php, ви можете посилатися на нього так:

return view('admin.profile', $data);
Переглянути імена каталогів не повинні містити.характер.

Визначення, чи існує View

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

use Illuminate\Support\Facades\View;

if (View::exists('emails.customer')) {
    //
}

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

Використанняfirstметодом, ви можете створити перший Шаблон, який існує у даному масиві переглядів. Це корисно, якщо ваша програма чи пакет дозволяє налаштовувати або перезаписувати View:

return view()->first(['custom.admin', 'admin'], $data);

Ви також можете викликати цей метод черезViewфасад:

use Illuminate\Support\Facades\View;

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

Передача даних у View

Як ви бачили в попередніх прикладах, ви можете передавати масив даних у View:

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

При передачі інформації таким чином дані повинні бути масивом з парами ключ / значення. Усередині вашого View ви можете отримати доступ до кожного значення за допомогою відповідного ключа, наприклад<?php echo $key; ?>. Як альтернатива передачі повного масиву даних доviewдопоміжну функцію, ви можете використовуватиwithметод додавання окремих фрагментів даних до View:

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

Обмін даними з усіма переглядами

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

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

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

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

Переглянути композиторів

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

У цьому прикладі давайте зареєструємо композиторів View в межахпостачальник послуг. Ми будемо використовуватиViewFacadeдля доступу до основиIlluminate\Contracts\View\Factoryвиконання контракту. Пам'ятайте, Laravel не включає каталог за замовчуванням для композиторів View. Ви можете організувати їх, як завгодно. Наприклад, ви можете створити файлapp/Http/View/Composersкаталог:

<?php

namespace App\Providers;

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

class ViewServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // Using class based composers...
        View::composer(
            'profile', 'App\Http\View\Composers\ProfileComposer'
        );

        // Using Closure based composers...
        View::composer('dashboard', function ($view) {
            //
        });
    }
}
Пам’ятайте, якщо ви створюєте нового постачальника послуг, який міститиме ваші реєстрації composer View, вам потрібно буде додати постачальника послуг доprovidersмасив уconfig/app.phpфайл конфігурації.

Тепер, коли ми зареєстрували composer,ProfileComposer@composeметод буде виконуватися кожного разу, коли файлprofileподається вид. Отже, давайте визначимо клас composer:

<?php

namespace App\Http\View\Composers;

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

class ProfileComposer
{
    /**
     * The user repository implementation.
     *
     * @var UserRepository
     */
    protected $users;

    /**
     * Create a new profile composer.
     *
     * @param  UserRepository  $users
     * @return void
     */
    public function __construct(UserRepository $users)
    {
        // Dependencies automatically resolved by service container...
        $this->users = $users;
    }

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

Безпосередньо перед Viewм View composercomposeметод викликається за допомогоюIlluminate\View\Viewекземпляр. Ви можете використовуватиwithметод прив’язки даних до View.

Усі композитори View вирішуються черезслужбовий контейнер, тому ви можете натякнути на будь-які залежності, які вам потрібні в конструкторі composer.

Приєднання composer до декількох Views

Ви можете приєднати композитор View до декількох Views одночасно, передавши масив Views як перший аргумент дляcomposerметод:

View::composer(
    ['profile', 'dashboard'],
    'App\Http\View\Composers\MyViewComposer'
);

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

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

Переглянути творців

Переглянутитворцідуже схожі на композиторів Шаблону; однак вони виконуються відразу після створення екземпляра View, а не чекають, поки View збирається відтворити. Щоб зареєструвати творця View, використовуйтеcreatorметод:

View::creator('profile', 'App\Http\View\Creators\ProfileCreator');

Оптимізація переглядів

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

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

php artisan view:cache

Ви можете використовуватиview:clearкоманда для очищення кешу View:

php artisan view:clear