我想知道是否有可能在运行时覆盖这个方法里面定义的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