2013-10-16 74 views
1

我期待將Laravel 4擴展爲包含ViewModel對象,或者使Views的行爲類似於ViewModel並創建單獨的模板部分。我寧願爲此使用鬍子,但它不是必需的。Laravel 4 ViewModel(帶小鬍子)

是否有任何好的庫或代碼片段可以讓我擴展基本的Laravel功能,並在我的控制器和HTML模板之間插入ViewModel。任何幫助,將不勝感激!

回答

1

我不確定我完全理解你的問題 - ViewComposers不適合嗎?

根據你正在努力實現您還可以掛接到一個視圖是由之前被炒魷魚的View Composer的情況下,像這樣的內容:

應用程序/啓動/ global.php或PackageServiceProvider

\Event::listen('composing: *', function($view) { 
    //custom code here acting upon the instantiated View object 
} 

其中我已輸入composing: *,*對應於視圖名稱,在這種情況下匹配任何視圖名稱。

通過命名您的視圖並創建響應不同命名空間的事件偵聽器,您可以更進一步您可以爲鬍鬚視圖註冊一個新命名空間,然後僅響應該命名空間中的視圖,通常我會將我的鬍子鑑於公共目錄,使他們能夠訪問客戶端,所以你可以做這樣的事情:

應用程序/啓動/ global.php或PackageServiceProvider

\View::addNamespace('m', public_path() . '/views'); 
\Event::listen('composing: m::*', function($view) { 
    //custom code here acting upon the instantiated View object when a namespaced mustache view is composed. 
} 

你會然後作出人士的意見:

View:make('m::view_name') 

以使視圖

公共/視圖/ view_name.mustache

如果上述不符合你的需要,你可以在Presenter看看 - 我還沒有嘗試這樣做包,但可能是你想要的。

希望這會有所幫助,對不起,如果我誤解了你的問題

+0

即靠攏,但我所尋找的是一個類,我可以將數據傳遞到它傳遞給前可以有功能按摩數據模板。 ViewComposers看起來非常引人注目,但是並沒有按照視圖/模板分解。我想爲每個模板呈現一個'ViewModel'。 – DanO

+0

我編輯了我的答案 - 請參閱底部的演示者包,這可能是您要查找的內容。我還沒有使用它,因爲我發現模型中的get和set屬性方法的組合已經足以滿足我需要。 – WebweaverD