View Composer无法使用Laravel

时间:2017-05-18 15:51:04

标签: php laravel

我有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。

有没有人知道为什么会发生这种情况或者我没有做好什么呢?

谢谢,

1 个答案:

答案 0 :(得分:0)

好的,我已经做了一个解决方法。这不是由于某种原因注册的,所以我把它放在AppServiceProivder.php

view()->composer(
        'layouts.app', function ($view){
            $view->with('notifications', json_decode(\Auth::user()->notifications, true));
        });

它不是那么干净但是对于这么小的东西,我想这没关系。