Рубрики
Uncategorized

Laravel переносит значения в общедоступный шаблон (view composer)

Автор оригинала: David Wong.

В нашем представлении есть много общих частей, таких как меню навигации, информация внизу, информация о пользователе и т.д. Обычно мы используем отдельные компоненты представления для обработки этих блоков элементов, но как передать переменные данных, требуемые этими компонентами, с внутренней стороны, является проблемой, поскольку эти компоненты используются совместно на нескольких страницах, и с точки зрения внутренней части задействовано несколько методов маршрутизации/контроллера, Нужно ли нам каждый раз извлекать и передавать эти данные повторно? Есть ли способ поддерживать одно определение и многократное повторное использование?

1. Используйте метод laravel view() – > поделиться

С помощью метода общего доступа, предоставляемого объектом view, мы можем определить переменные общего доступа в методе загрузки поставщика услуг, такого как appserviceprovider:

public function boot()
{
    Schema::defaultStringLength(191);

    $weekeitems = ['Day', 'one', 'two', 'three', 'four', 'five', 'six'];
    $today = sprintf ('week% s', $weekeitems [date ("W", time())]);
    view()->share('today', $today);
}

Если компонент представления не указан, смысл приведенного выше кода состоит в том, чтобы поделиться им во всех представлениях сегодня Переменная, что, конечно, немного расточительно. Это не рекомендуется. Обычно мы используем view composer для указания области представления для общей “переменной” по умолчанию в виде закрытия.

2. Используйте метод laravel view() – > composer

view()->composer(['layouts.app'], function ($view) {
    $view - > with ('publicmsg ','specify shared view component information');
});