2015-05-29 50 views
0

我有一個簡單的設置,我需要通過我的應用程序在我的網站的標題中顯示一些數據。要做到這一點,我創建了一個ComposerServiceProvider類和HeaderComposer類委派這個責任,如下圖所示:在Laravel 4中將命名空間類用作View Composer?

ComposerServiceProvider

use Illuminate\Support\ServiceProvider; 

class ComposerServiceProvider extends ServiceProvider { 
    public function register() { 
     $this->app->view->composer('templates.header', 'HeaderComposer'); 
    } 
} 

HeaderComposer

class HeaderComposer { 
    public function compose($view) { 

     Event::listen('illuminate.query', function($q) { 
      print_r($q); 
     }); 

     $view->with('nearbyMissions', array(
      'past' => Mission::remember(60, 'previousMissions')->previousMissions(3)->get(), 
      'future' => Mission::remember(60, 'nextMissions')->nextMissions(3)->get() 
     )); 
    } 
} 

以前,這些班都沒有命名空間,但現在我已決定將它們中的每一個命名空間作爲一種良好實踐,通過在文件前面加上:

namespace MyProject\Composers; 

但是,這已經打破了我的應用程序,因爲我的項目的某些部分無法再解析我的作曲家類。我的網頁沒有工作,因爲它們都使用它採用了模板頭視圖我HeaderComposer

Class HeaderComposer does not exist (View: H:\myproject\app\views\templates\main.blade.php) 

我在哪裏打算申報班裏use報表?在我看來? (這看起來不正確)。別的地方?

+0

你試過'$這個 - > APP->查看 - >作曲( 'templates.header',「MyProject的\ Composers \ HeaderComposer');'? –

回答

1

既然你只是命名空間類,那麼你需要更新你的作曲家結合:

use Illuminate\Support\ServiceProvider; 

class ComposerServiceProvider extends ServiceProvider { 

    public function register() { 
     $this->app->view->composer('templates.header', 'MyProject\Composers\HeaderComposer'); 
    } 

} 
+0

啊真棒,我認爲這將是相對於目前的類。雖然有意義。乾杯。 – ReactingToAngularVues

相關問題