Есть ли способ переопределить путь кеша лития php, определенный в Compiler :: template ()

Я хотел бы знать, возможно ли переопределить во время выполнения cachePath, определенный внутри этого метода:

http://li3.me/docs/lithium/template/view/Compiler::template ()

Я пытаюсь использовать литий в качестве мультитенантного приложения и пытаюсь разделить все между арендаторами, включая скомпилированные шаблоны.

2

Решение

Есть много способов сделать это, в зависимости от вашей реализации.
Одним из способов является установка параметра 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'
)
));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]