2015-06-22 73 views
1

我已經開始與Laravel幾天前,今天我剛剛安裝了vespakoen/menu這似乎是非常好的,並可能會爲我所需要的。如何爲我的Laravel應用程序註冊全局變量?

目前我已經在我的系統上安裝了Laravel 5.1。

我現在遇到的問題是在哪裏註冊我的菜單以便我的應用程序可以在任何視圖上訪問。

我應該創建一個服務提供者嗎?我應該創建一個類幷包含在引導過程中嗎?執行此任務的正確方法是什麼?

注:問題不在於如何安裝module,但我怎麼能有任何controller任何view訪問$menu變量。

+0

@halfer,你好,並感謝更正,但人們不知道我的技能是什麼,所以,解決方案可能對一些用戶來說是顯而易見的,他們認爲我會問問問題,並由此獲得降低成本情況。 –

+0

我之所以倒退是因爲你恢復了我的編輯,儘管現在我已經改變了主意,並收回了投票。請記住,還原編輯看起來像是在開始一場編輯戰爭,而這場戰爭在這裏並沒有太好的表現。 – halfer

+0

xaxaxaxa。我不與任何人交戰:)只是我喜歡弄清楚我的技能集合是什麼,並且防止downvotes以防我的問題不太好。無論如何,你對我的問題有任何答案嗎? –

回答

3

其實,你應該在config/app.php文件中預留。然後,您可以添加

In the Service Providers array : 'Menu\MenuServiceProvider', 
In the aliases array : 'Menu' => 'Menu\Menu', 

最後,您需要運行以下命令;

php artisan dump-autoload 

我假設你已經在composer.json

對不起加入這個包,我沒弄清楚你的問題,你編輯之前的。我不確定在視圖或控制器中不能調用$ menu變量。根據我的經驗,我會以注射的方式做到這一點。

routes.php;

App::bind('MenuCreator',function($app) { 
    return new yournamespace\YourMenuClass(); 
}); 

YourMenuClass.php

比方說,我有一個函數調用createMenu

public function createMenu { 
     //TODO create Menu and styling Menu 
} 

如果我要調用此注射法,我可以訪問此方式;

$menuClass = App::make('MenuCreator'); 
$menuClass->createMenu(); 

請注意,您需要導入應用。而且你還需要運行

php artisan dump-autoload 

希望得到這個幫助。對不起,我的英語不好。

+0

Kelvin Kyaw謝謝你的回答。問題不在於如何在Laravel上註冊模塊,但我如何創建一個菜單變量,它將包含菜單項,所以稍後我將通過視圖訪問菜單。我已經在Laravel上註冊了該模塊。 exact的問題是,我應該創建一個新的菜單,以使菜單在任何視圖中都可用。 –

+0

你的意思是,你想在視圖文件中調用你創建的菜單? –

+0

目前我已經創建了一個儀表板,並從儀表板中處理了我所有的資源(用戶/角色/權限/產品/類別/等)。對於每個實體,我都有一個單獨的控制器文件。所以,爲了顯示每個控制器的菜單,我應該在控制器以外的地方註冊菜單。 ( 我想 :) ) –

1

最近,在我之前的項目中,我可以使用View Composer來處理相同的需求。

而且我相信在處理laravel5這樣的需求時,這是更好的方法。

如果你想要示例實現,請告訴我。