Skip to content

3.7. Представления

1. Введение

Конечно, нецелесообразно возвращать целые строки HTML-документов напрямую из маршрутов и контроллеров. К счастью, представления предоставляют удобный способ размещения всего нашего 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']);
});

1.1. Написание представлений в React / Vue

Вместо того чтобы писать frontend-шаблоны на PHP с помощью Blade, многие разработчики начинают предпочитать писать их, используя React или Vue. Laravel делает это простым благодаря библиотеке Inertia, которая позволяет легко связать frontend на React / Vue с backend на Laravel, избегая типичных сложностей при создании SPA.

Наши стартовые наборы Breeze и Jetstream предоставляют отличную отправную точку для вашего следующего приложения на Laravel, работающего на Inertia. Кроме того, Laravel Bootcamp предлагает полную демонстрацию создания приложения на Laravel с использованием Inertia, включая примеры на Vue и React.

2. Создание и рендеринг представлений

Вы можете создать представление (view) двумя способами:

  1. Создание вручную:

    Поместите файл с расширением .blade.php в директорию resources/views вашего приложения. Название файла станет именем представления, которое вы сможете использовать в коде.

  2. Создание с помощью Artisan-команды:

    Используйте 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-синтаксиса.

2.1. Вложенные директории представлений

Представления также можно располагать в поддиректориях resources/views. Для обращения к вложенным представлениям можно использовать "точечную" нотацию ( указывая путь к файлу с помощью точек ). Например, если ваше представление хранится по пути resources/views/admin/profile.blade.php, вы можете возвращать его в одном из маршрутов / контроллеров вашего приложения следующим образом:

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

Символ . не должен использоваться в названиях директорий для представлений.

2.2. Создание первого доступного представления

С помощью метода first фасада View вы можете создать первое представление, которое существует в заданном массиве представлений. Это может быть полезно, если ваше приложение или пакет позволяет настраивать или переопределять представления:

use Illuminate\Support\Facades\View;
 
return View::first(['custom.admin', 'admin'], $data);

2.3. Проверка существования представления

Если вам нужно проверить, существует ли представление, вы можете использовать фасад View. Метод exists вернет true, если представление существует:

use Illuminate\Support\Facades\View;
 
if (View::exists('admin.profile')) {
// ...
}

3. Передача данных в представления

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

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

При передаче данных таким образом они должны быть представлены в виде массива с парами ключ / значение. После передачи данных в представление вы можете получить доступ к каждому значению, используя ключи данных, например, <?php echo $name; ?>.

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

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