2015-11-26 135 views
2

我想知道是否有可能在運行時覆蓋這個方法裏面定義的cachePath php的鋰緩存路徑:有沒有辦法來覆蓋編譯器::模板中定義()

http://li3.me/docs/lithium/template/view/Compiler::template()

我正在嘗試使用鋰作爲多租戶應用程序,並且我試圖分離包括編譯模板在內的租戶之間的所有內容。

+0

如果「路徑」,應該使用的選項中定義的,而不是默認,設置編譯的類名做..如果你在第三行看到有$ options + = $ defaults;它添加了不存在的參數,但它不會覆蓋它們,如果它們存在的話。所以如果你設置路徑到方法的選項數組,它會很好.. – Svetoslav

+0

是的,我注意到@svetlio,但我做了一個完整的lookoout的一個請求使用xdebug,並且我知道compile :: template()被調用的位置,但是存在LOTS的indirections,我不知道我應該在沒有實際修改litlium核心的情況下設置選項。 –

+0

請發佈一段代碼,你已經寫了,不工作,或者你想寫 – Oerd

回答

2

有很多方法可以做到這一點,具體取決於您的實施。 一種方法是在引導期間使用Media :: type函數設置您的html(或其他內容類型)處理程序的compiler.path參數。

例如:

Media::type('html', null, array(
    'cast' => false, 
    'view' => 'lithium\template\View', 
    'paths' => array(
    'template' => '{:library}/views/{:controller}/{:template}.{:type}.php', 
    'layout' => '{:library}/views/layouts/{:layout}.{:type}.php', 
    'element' => '{:library}/views/elements/{:template}.{:type}.php' 
), 
    'compiler' => array(
    'path' => '/path/to/your/cache/folder' 
) 
)); 

但是你的要求來看,它看起來像你最好延伸\鋰\模板\圖\編譯器類和重寫模板函數。

您可以通過使用同一介質::型功能

Media::type('html', null, array(
    'cast' => false, 
    'view' => 'lithium\template\View', 
    'paths' => array(
    'template' => '{:library}/views/{:controller}/{:template}.{:type}.php', 
    'layout' => '{:library}/views/layouts/{:layout}.{:type}.php', 
    'element' => '{:library}/views/elements/{:template}.{:type}.php' 
), 
    'classes' => array(
    'compiler' => '\namespace\class\name' 
) 
)); 
+0

它的作品,謝謝! –

相關問題