Intereting Posts
PHP Добавление двух часов к дате в заданные часы с использованием функции UIPickerView не может получить вывод массива в Swift 3.0 Назначить одно значение нескольким переменным cakePHP, возвращающий повторяющиеся записи Автоматическое добавление товара в корзину, когда другой товар присутствует в пурпурной тележке Установка phpmyadmin с домашним пивом Попытка извлечь 5 символов из столбца при добавлении записи mysql через php Php mysql создает базу данных, если не существует Устранение неполадок mysqli_fetch_assoc () Как обнаружить входящий запрос (с помощью скрипта PHP) из поддомена CNAME? Могу ли я использовать логическое «или» в случае с предложением оператора PHP? Фильтрация файла журнала с использованием COUNT, GROUP BY, ORDER BY MAX Дизайн базы данных для таблицы ответов в приложении викторины Простая замена шаблона var, но с завихрением Как безопасно выполнять пользовательский код PHP

Laravel: передача переменных по умолчанию для просмотра

В Laravel мы все передаем данные на наш взгляд примерно так же

$data = array( 'thundercats' => 'Hoooooooooooh!' ); return View::make('myawesomeview', $data); 

Но есть ли способ добавить переменные по умолчанию в представление без необходимости декларировать его снова и снова в $data ? Это было бы очень полезно для повторения переменных, таких как имена пользователей, логика PHP и даже стили CSS, если это требует сайт.

Использовать View Composers

Просмотр композиторов – это обратные вызовы или методы класса, вызываемые при создании представления. Если у вас есть данные, которые вы хотите привязать к данному представлению каждый раз, когда это представление создается во всем приложении, композитор представления может организовать этот код в одном месте. Поэтому просмотр композиторов может функционировать как «модели просмотра» или «докладчики».

Определение A View Composer:

 View::composer('profile', function($view) { $view->with('count', User::count()); }); 

Теперь каждый раз, когда создается профиль профиля, данные счета привязаны к представлению. В вашем случае это может быть для id :

  View::composer('myawesomeview', function($view) { $view->with('id', 'someId'); }); 

Таким образом, $id будет доступен для вашего просмотра myawesomeview каждый раз, когда вы создаете представление, используя:

 View::make('myawesomeview', $data); 

Вы также можете присоединить композитор представления к нескольким представлениям одновременно:

 View::composer(array('profile','dashboard'), function($view) { $view->with('count', User::count()); }); 

Если вы предпочтете использовать композитор на основе классов, который обеспечит преимущества разрешения через приложение IoC Container , вы можете сделать это:

 View::composer('profile', 'ProfileComposer'); 

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

 class ProfileComposer { public function compose($view) { $view->with('count', User::count()); } } 

Документация, и вы также можете прочитать эту статью .

Есть несколько способов, до сих пор я экспериментировал с некоторыми.

1. Используйте синглтон, вы можете поместить его в route.php

 App::singleton('blog_tags', function() { return array( 'Drupal' => 'success', 'Laravel' => 'danger', 'Symfony' => 'dark', 'Wordpress' => 'info' ); }); 

2.Используйте настройки, загрузите здесь. https://github.com/Phil-F/Setting . Вы можете поместить это в контроллер или шаблон.

 Setting::set('title', 'Scheduler | Mathnasium'); 

3.Use View share, в значительной степени используйте его в своем шаблоне

 Controller: Views::share('theme_path', 'views/admin/'); Template: <link href="{{ $theme_path }}/assets/bootstrap.min.css"/> 

4. Моя текущая настройка образца, я написал конструкцию в HomeController.

 public function __construct() { // Define a theme namespace folder under public View::addLocation('../public/views/admin'); View::addNamespace('admin', '../public/views/admin'); View::share('theme_path', 'views/admin/'); // Set default page title Setting::set('title', 'Scheduler | Mathnasium'); Setting::set('description', 'daily customer scheduler.'); Setting::set('keywords', ['Reservation', 'Planner']); Setting::set('page-title', ''); } 

@enchance, как альтернатива использованию '*', как упоминалось в вашем комментарии, возможно, вам поможет и View :: share. Из документации Laravel:

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

View :: share ('name', 'Steve');

Выдержка из http://laravel.com/docs/responses

Да там совсем есть способ – см. Здесь на вид композиторов .

Вы можете использовать это для добавления данных в представление или набор представлений.