我通过以下方式在 Phalcon 中配置了 Volt 引擎:
// create dependency injector
$di = new Phalcon\DI\FactoryDefault();
// configure Volt compiler
$di->set('volt', function($view, $di) {
$volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
$volt->getCompiler()
->addFunction('strtotime', 'strtotime')
->addFunction('money_format', 'money_format')
->addFunction('slownie', 'Kwota::getInstance()->slownie');
$volt->setOptions(array(
'compiledPath' => '../cache/' // this directory EXISTS
));
return $volt;
});
// configure View for backend actions
$di->set('view', function() {
$view = new Phalcon\Mvc\View();
$view->setViewsDir('../app/51/views/');
$view->registerEngines(['.volt' => 'volt']);
return $view;
});
// configure View for custom content like E-mails, print-view, etc.
$di->set('simpleView', function() {
$view = new Phalcon\Mvc\View\Simple();
$view->setViewsDir('../app/volt/');
$view->registerEngines(['.volt' => 'volt']);
return $view;
});
如您所见,编译后的 .volt.php 模板应该保存在 ../cache 目录中,但它们是在 .volt 模板所在的同一文件夹中生成的。怎么了?
顺便说一句,如上例所示,对多个 View 实例使用共享(相同)“伏特”组件是否安全?请注意,Volt 构造函数采用 $view 参数。
编辑:您不能将共享的 Volt 编译器用于view和simpleView,因为它们会干扰。