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

Метод share

Метод share класса View позволяет сделать данные доступными для всех шаблонов представлений в приложении. Это удобно, когда нужно передать общие данные, например, информацию о текущем пользователе, настройки сайта или глобальные параметры интерфейса, во все виды без дублирования кода. Метод принимает первым параметром имя переменной в виде строки, вторым - её значение, или массив ключ-значение для передачи нескольких переменных сразу.

Синтаксис

<?php View::share($key, $value); View::share([$key1 => $value1, $key2 => $value2]); ?>

Пример

Передадим переменную 'siteName' во все шаблоны приложения. Обычно это делается в сервис-провайдере или в методе boot класса AppServiceProvider:

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

Теперь переменная 'siteName' доступна в любом Blade-шаблоне:

<html> <head> <title>{{ $siteName }}</title> </head> <body> <h1>Welcome to {{ $siteName }}</h1> </body> </html>

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

<html> <head> <title>My Awesome Site</title> </head> <body> <h1>Welcome to My Awesome Site</h1> </body> </html>

Пример

Передадим несколько переменных сразу с помощью массива:

<?php namespace AppProviders; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\View; class AppServiceProvider extends ServiceProvider { public function boot() { View::share([ 'siteName' => 'My Blog', 'year' => 2026, 'isAdmin' => false, ]); } } ?>

Теперь все три переменные доступны в любом представлении:

<html> <body> <p>Site: {{ $siteName }}</p> <p>Year: {{ $year }}</p> <p>Admin: {{ $isAdmin ? 'Yes' : 'No' }}</p> </body> </html>

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

<html> <body> <p>Site: My Blog</p> <p>Year: 2026</p> <p>Admin: No</p> </body> </html>

Пример

Передадим данные текущего аутентифицированного пользователя во все представления:

<?php namespace AppProviders; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Auth; class AppServiceProvider extends ServiceProvider { public function boot() { View::share('currentUser', Auth::user()); } } ?>

Используем переданные данные в шаблоне навигации:

<html> <body> <nav> @if ($currentUser) <p>Hello, {{ $currentUser->name }}</p> <a href="/logout">Logout</a> @else <a href="/login">Login</a> @endif </nav> @yield('content') </body> </html>

Если пользователь аутентифицирован, результатом будет:

<html> <body> <nav> <p>Hello, John Doe</p> <a href="/logout">Logout</a> </nav> main content </body> </html>

А если пользователь не аутентифицирован:

<html> <body> <nav> <a href="/login">Login</a> </nav> main content </body> </html>

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

  • метод composer,
    который регистрирует обратный вызов для конкретного представления
  • метод creator,
    который выполняет обратный вызов при создании представления
  • директива foreach,
    которая используется для перебора массивов в шаблонах
  • тег echo,
    который экранирует и выводит данные в шаблонах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить