我想知道是否有可能在運行時覆蓋這個方法裏面定義的cachePath php的鋰緩存路徑:有沒有辦法來覆蓋編譯器::模板中定義()
http://li3.me/docs/lithium/template/view/Compiler::template()
我正在嘗試使用鋰作爲多租戶應用程序,並且我試圖分離包括編譯模板在內的租戶之間的所有內容。
我想知道是否有可能在運行時覆蓋這個方法裏面定義的cachePath php的鋰緩存路徑:有沒有辦法來覆蓋編譯器::模板中定義()
http://li3.me/docs/lithium/template/view/Compiler::template()
我正在嘗試使用鋰作爲多租戶應用程序,並且我試圖分離包括編譯模板在內的租戶之間的所有內容。
有很多方法可以做到這一點,具體取決於您的實施。 一種方法是在引導期間使用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'
)
));
它的作品,謝謝! –
如果「路徑」,應該使用的選項中定義的,而不是默認,設置編譯的類名做..如果你在第三行看到有$ options + = $ defaults;它添加了不存在的參數,但它不會覆蓋它們,如果它們存在的話。所以如果你設置路徑到方法的選項數組,它會很好.. – Svetoslav
是的,我注意到@svetlio,但我做了一個完整的lookoout的一個請求使用xdebug,並且我知道compile :: template()被調用的位置,但是存在LOTS的indirections,我不知道我應該在沒有實際修改litlium核心的情況下設置選項。 –
請發佈一段代碼,你已經寫了,不工作,或者你想寫 – Oerd