2017-05-18 11 views
0

を働いていない\のHttp \ NotificationComposer.php:View Composerは、私がアプリケーションを持っているLaravel

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 \アプリで:私はまた、アプリケーションの\プロバイダ\ ComposerServiceProvider.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'); 
    } 
} 

.PHP:

'providers' => [ 
    ... 
    App\Providers\ComposerServiceProvider::class, 
    ... 
    ], 
]; 

私は私が正しく表示作曲を設定していると信じて、しかし毎回レイアウト\ app.blade.phpがロードされる(D laravelのefault bootstrap bar)データベースにいくつかの通知があっても、通知は表示されません。ビューコンポーザで見るように、私はそれらをddしようとしました。

これは何が起こっているのか、私が正しく行っていないのか誰にも分かりませんか?

ありがとう、

+0

したがって、新しいサービスプロバイダをconfig/app.phpの 'aliases'配列に登録するべきではありません。それは、残りのサービスプロバイダと同じでなければなりません。また、 'app'は予約されたView Composerの名前かもしれませんが、わかりません。 – Kenyon

+0

ここで何が起こっているのか分かりませんが、View Composerは 'View :: make'や' Response :: view'を使って「作成」されたビューの名前だけをトリガします。 'myview'から' app'ビューを拡張すると、作者は 'myview'のために登録する必要があります – apokryfos

+0

私はビューを作成していないとビューを登録するにはどうしたらいいですか:: make? – iLC

答えて

0

以下のコードのようにフルパスを入力してみてください。

view()->composer(
    'view.folder.file', // may be not loading cause your app file is under layouts folder. 
    'App\Http\ViewComposers\NotificationComposer' 
); 

したがって、フォルダでビューパスを追加してみてください。

+0

hasnt worked :( – iLC

+0

エラーが発生しましたか? – Webinion

0

私は代わりに回避策を作成しました。これは、私はそれはのようにきれいではないのですが、この小さな何かを、私はそれは大丈夫だと思うAppServiceProivder.php

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

のこの内部を置き、何らかの理由で登録されていません。

関連する問題