有没有办法覆盖 Compiler::template() 中定义的 php 锂缓存路径
Is there a way to override the php lithium cache path defined in Compiler::template()
我想知道是否可以在运行时覆盖此方法中定义的 cachePath:
http://li3.me/docs/lithium/template/view/Compiler::template()
我正在尝试将 lithium 用作多租户应用程序,并且我正在尝试分离租户之间的所有内容,包括已编译的模板。
有很多方法可以做到这一点,具体取决于您的实施方式。
一种方法是在 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 class 并覆盖模板函数。
您可以通过使用相同的 Media::type 函数
设置编译器的 class 名称来实现
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'
)
));
我想知道是否可以在运行时覆盖此方法中定义的 cachePath:
http://li3.me/docs/lithium/template/view/Compiler::template()
我正在尝试将 lithium 用作多租户应用程序,并且我正在尝试分离租户之间的所有内容,包括已编译的模板。
有很多方法可以做到这一点,具体取决于您的实施方式。 一种方法是在 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 class 并覆盖模板函数。
您可以通过使用相同的 Media::type 函数
设置编译器的 class 名称来实现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'
)
));