我有App \ Http \ NotificationComposer.php:
namespace App\Http\ViewComposers;
use Illuminate\View\View;
class NotificationComposer
{
public $notifications;
public function __construct(){
$this->notifications = json_decode(\Auth::user()->notifications, true);
}
public function compose (View $view)
{
dd($this->notifications);
$view->with('notifications');
}
}
我还有一个App \ Providers \ ComposerServiceProvider.php:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
view()->composer(
'app',
'App\Http\ViewComposers\NotificationComposer'
);
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
在我的config \ app.php中:
'providers' => [
...
App\Providers\ComposerServiceProvider::class,
...
],
];
我相信我已经正确设置了视图编辑器,但是每次加载layouts \ app.blade.php(laravel中的默认引导栏)它都不会呈现任何通知,即使数据库中有一些,正如你在视图作曲家中看到的那样,我试图将它们dd。
有没有人知道为什么会发生这种情况或者我没有做好什么呢?
谢谢,
答案 0 :(得分:0)
好的,我已经做了一个解决方法。这不是由于某种原因注册的,所以我把它放在AppServiceProivder.php
中view()->composer(
'layouts.app', function ($view){
$view->with('notifications', json_decode(\Auth::user()->notifications, true));
});
它不是那么干净但是对于这么小的东西,我想这没关系。