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

Класс View

Класс View является основным компонентом для работы с представлениями в Laravel. Он предоставляет методы для загрузки Blade-шаблонов, передачи данных в представления и совместного использования переменных между всеми шаблонами. Основной способ получения экземпляра класса - использование глобальной функции view.

Синтаксис

<?php // Базовый синтаксис view($path, $data = [], $mergeData = []); // Пример использования view('index', ['name' => 'John']); ?>

Параметры

Метод view принимает три параметра:

  • $path - путь к шаблону относительно директории resources/views (без расширения .blade.php)
  • $data - ассоциативный массив данных, которые будут доступны в представлении
  • $mergeData - дополнительные данные для слияния с основным массивом

Пример с передачей данных

Давайте создадим контроллер, который передает массив данных в представление:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class ArticleController extends Controller { public function index() { $articles = ['article 1', 'article 2', 'article 3']; return view('articles.index', ['articles' => $articles]); } } ?>

Теперь создадим шаблон, который выведет полученные данные:

<html> <body> <h1>Articles list</h1> <ul> @foreach ($articles as $article) <li>{{ $article }}</li> @endforeach </ul> </body> </html>

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

<html> <body> <h1>Articles list</h1> <ul> <li>article 1</li> <li>article 2</li> <li>article 3</li> </ul> </body> </html>

Метод share - совместное использование данных

Метод share позволяет сделать данные доступными во всех представлениях приложения:

<?php namespace AppProviders; use IlluminateSupportServiceProvider; use IlluminateSupportFacadesView; class AppServiceProvider extends ServiceProvider { public function boot() { View::share('siteName', 'My Awesome Site'); } } ?>

После этого переменная siteName будет доступна в любом шаблоне:

<html> <body> <header> <h1>{{ $siteName }}</h1> </header> <main> @yield('content') </main> </body> </html>

Метод composer - привязка данных к представлению

Метод composer позволяет привязать данные к конкретному представлению или группе представлений:

<?php namespace AppProviders; use IlluminateSupportServiceProvider; use IlluminateSupportFacadesView; class AppServiceProvider extends ServiceProvider { public function boot() { View::composer('profile', function ($view) { $view->with('user', auth()->user()); }); // Для нескольких представлений View::composer(['profile', 'dashboard'], function ($view) { $view->with('notifications', auth()->user()->notifications); }); } } ?>

Метод creator - обработчик создания представления

Метод creator аналогичен composer, но вызывается при создании представления, а не при его рендеринге:

<?php namespace AppProviders; use IlluminateSupportServiceProvider; use IlluminateSupportFacadesView; class AppServiceProvider extends ServiceProvider { public function boot() { View::creator('settings', function ($view) { $view->with('settings', config('app.settings')); }); } } ?>

Пример с методом exists

Метод exists проверяет, существует ли представление:

<?php namespace AppHttpControllers; use IlluminateSupportFacadesView; class PageController extends Controller { public function show($page) { if (View::exists('pages.' . $page)) { return view('pages.' . $page); } return view('errors.404'); } } ?>

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

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