Я пытаюсь использовать одни и те же данные Eloquent на нескольких страницах (не на всех).Данные требуются в 'view/board/segments/header'
. Для этого я впервые использую view :: composer.Я следовал документации на веб-сайте laravel (5.4).
Я создал следующее:
App \ Providers \ ComposerServiceProvider
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
public function boot()
{
view()->composer(
'layouts.board.main',
'App\Http\ViewComposers\Board\MemberSettingsComposer'
);
}
public function register()
{
//
}
}
App \ Http \ ViewComposers \ Board \ MemberSettingsComposer
<?php
namespace App\Http\ViewComposers\Board;
use Illuminate\View\View;
use Auth;
use App\Models\BoardmembersDashboardSettings;
class MemberSettingsComposer {
public $settings;
public function __construct()
{
//$this->settings = BoardmembersDashboardSettings::find(Auth::user()->id);
$this->settings = BoardmembersDashboardSettings::where('id', Auth::user()->id)->first();
}
public function compose(View $view)
{
$view->with(compact('settings', $this->settings));
}
}
ресурсы / представления / макеты / board / main.blade.php
<!DOCTYPE html>
<html lang="en">
<!-- Start including header -->
@include('board.segments.header')
<!-- End including header-->
<body class="framed main-scrollable">
<div class="wrapper">
<nav class="navbar navbar-static-top header-navbar">
<!-- Start include Mobile Navigation -->
@include('board.segments.navmobile')
<!-- End include Mobile Navigation -->
<!-- Start include Brand Navigation -->
@include('board.segments.navbrand')
<!-- End include Brand Navigation -->
<div class="topnavbar">
<!-- Start include Top Navigation Left-->
@include('board.segments.navtopleft')
<!-- End include Top Navigation Left -->
<!-- Start include Top Navigation Right -->
@include('board.segments.navtopright')
<!-- End include Top Navigation Right -->
</div>
</nav>
<div class="dashboard">
<div class="sidebar">
<div class="quickmenu">
<div class="quickmenu__cont">
<div class="quickmenu__list">
<div class="quickmenu__item active">
<div class="fa fa-fw fa-home"></div>
</div>
<div class="quickmenu__item">
<div class="fa fa-fw fa-envelope-o"></div>
</div>
<div class="quickmenu__item new">
<div class="fa fa-fw fa-comments-o"></div>
</div>
<div class="quickmenu__item">
<div class="fa fa-fw fa-feed"></div>
</div>
<div class="quickmenu__item">
<div class="fa fa-fw fa-cog"></div>
</div>
</div>
</div>
</div>
<div class="scrollable scrollbar-macosx">
<div class="sidebar__cont">
<!-- Start include Side Menu Pages -->
@include('board.segments.sidemenupages')
<!-- End include Side Menu Pages -->
<!-- Start include Side Menu Mail -->
@include('board.segments.sidemenumail')
<!-- End include Side Menu Mail -->
<!-- Start include Side Menu Messages -->
@include('board.segments.sidemenumessages')
<!-- End include Side Menu Messages -->
<!-- Start include Side Menu Activity -->
@include('board.segments.sidemenuactivity')
<!-- End include Side Menu Activity -->
<!-- Start include Side Menu Settings -->
@include('board.segments.sidemenusettings')
<!-- End include Side Menu Settings -->
</div>
</div>
</div>
<div class="main">
<div class="main__scroll scrollbar-macosx">
<div class="main__cont">
<div class="main-heading">
<div class="main-title">
<!-- Start include Breadcrumb -->
@include('board.segments.breadcrumb')
<!-- End include Breadcrumb -->
</div>
<div class="main-filter">
<!-- Start include Search -->
@include('board.segments.search')
<!-- End include Search -->
</div>
</div>
@yield('content')
</div>
</div>
</div>
</div>
</div>
<!-- Start include Footer -->
@include('board.segments.footer')
<!-- End include Footer -->
</body>
</html>
Я пробовал несколько вариантов:
- Изменил визуализированный вид с
'layouts.board.main'
на 'board.segments.header'
- Использовал
dd($this->settings)
в каждом месте, о котором я мог подумать.Единственное место, где это не работает, это вид.
Я получаю следующую ошибку 4 раза.
Undefined property: Illuminate\View\Engines\CompilerEngine::$settings
Кто-нибудь знает, что может бытьнеправильно и попытаться мне это объяснить?