Maison > Questions et réponses > le corps du texte
在phalcon中,用tools生成的单模块项目,默认是.volt
但是生成的多模块是.phtml
如何也让多模块也用.volt引擎呢?
ps:光改文件后缀不好使
阿神2017-04-10 17:31:40
如果是这种项目结构
只需要将services.php中的
$di->setShared('view', function () use ($config) {
$view = new View();
$view->setViewsDir($config->application->viewsDir);
$view->registerEngines(array(
'.volt' => function ($view, $di) use ($config) {
$volt = new VoltEngine($view, $di);
$volt->setOptions(array(
'compiledPath' => $config->application->cacheDir,
'compiledSeparator' => '_'
));
return $volt;
},
//'.phtml' => 'Phalcon\Mvc\View\Engine\Php'
// '.volt' => 'Phalcon\Mvc\View\Engine\Volt'
));
return $view;
});
剪切放在每个模块中的Modules.php中,替换
$di['view'] = function () {
$view = new View();
$view->setViewsDir(__DIR__ . '/views/');
return $view;
}
就ok了,,但是注意在Modules.php中要引入命名空间
use Phalcon\Mvc\View\Engine\Volt as VoltEngine;
不过在3.0之后用开发工具生成的目录不是这种结构了。
天蓬老师2017-04-10 17:31:40
$view->registerEngines(
[
//".phtml" => 'Phalcon\Mvc\View\Engine\Php',
'.phtml' => '\Phalcon\Mvc\View\Engine\Volt',
'.volt' => function($view, $di) use ($config) {
$volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(['compiledPath' => $config->application->cacheDir . 'view/',
'compiledExtension' => '.compiled',
'compileAlways' => true
]);
$compiler = $volt->getCompiler();
$compiler->addFilter('floor', 'floor');
$compiler->addFunction('range', 'range');
return $volt;
},
]
);
这是我的使用方法。