我想知道是否可以在运行时覆盖此方法中定义的cachePath:
http://li3.me/docs/lithium/template/view/Compiler::template()
我正在尝试使用锂作为多租户应用程序,我试图在包括已编译模板的租户之间分离所有内容。
答案 0 :(得分:2)
根据您的实施情况,有很多方法可以做到这一点。 一种方法是在bootstrap期间使用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'
)
));
但根据您的要求判断,看起来您最好扩展\ lithium \ template \ view \ Compiler类并覆盖模板函数。
您可以通过使用相同的Media :: type函数
设置编译器的类名来完成此操作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'
)
));