Я хотел бы знать, возможно ли переопределить во время выполнения cachePath, определенный внутри этого метода:
http://li3.me/docs/lithium/template/view/Compiler::template ()
Я пытаюсь использовать литий в качестве мультитенантного приложения и пытаюсь разделить все между арендаторами, включая скомпилированные шаблоны.
Есть много способов сделать это, в зависимости от вашей реализации.
Одним из способов является установка параметра compiler.path вашего обработчика html (или других типов содержимого) при использовании функции 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'
),
'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'
)
));
Других решений пока нет …