Вы должны использовать View composers для выполнения sh этого. Они позволяют передавать одни и те же данные через несколько представлений, вызывая их только в одном месте.
В вашем providers/AppServiceProvider.php
вы можете добавить следующее к вашему способу загрузки:
use Illuminate\Support\Facades\View; //import view facade
public function boot()
{
View::composer(['view-name', 'another-view-name'], function($view){
$theme = AppHelper::instance()->getTheme();
$themeFolder = $theme[0]->websiteAdmin;
$includePath = 'frontend.'.$theme[0]->themeName.'.sections.';
$view->with(compact('themeFolder', 'includePath', 'theme'));
});
}
View::composers
первый аргумент принимает массив представлений, поместите сюда все представления, для которых вы хотите передать данные ['view-name', 'another-view-name']
, он также может принимать одну строку.
Данные теперь будут доступны для указанных вами представлений до $themeFolder
$includePath
и $theme
переменных
Если вы хотите, чтобы эти данные передавались во ВСЕ представления, вы можете сделать '*'
в качестве первого аргумента. ПРИМЕЧАНИЕ , данные передаются в КАЖДЫЙ вид, который вы создаете, только '*'
, если вы хотите, чтобы каждый вид содержал данные! В противном случае, укажите мнения по отдельности.
Если вы хотите, чтобы все представления в определенной папке передавали данные, которые вы можете сделать 'folder-name.*'
.
В качестве альтернативы, единственный другой способ передачи данных в @yield
- это верните представление app.blade.php
с переменными в вашем контроллере.