Перегляди
Створення 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']);
});
Як бачите, перший аргумент, переданий вview
helper відповідає імені файлу представлення у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 в межахпостачальник послуг. Ми будемо використовуватиView
Facadeдля доступу до основи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