2015-11-26 103 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

它的作品,谢谢! –

相关问题