在phalcon中,用tools生成的单模块项目,默认是.volt
但是生成的多模块是.phtml
如何也让多模块也用.volt引擎呢?
ps:光改文件后缀不好使
走同样的路,发现不同的人生
如果是这种项目结构
只需要将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之后用开发工具生成的目录不是这种结构了。
$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; }, ] );
这是我的使用方法。
如果是这种项目结构
只需要将services.php中的
剪切放在每个模块中的Modules.php中,替换
就ok了,,但是注意在Modules.php中要引入命名空间
不过在3.0之后用开发工具生成的目录不是这种结构了。
$view->registerEngines(
这是我的使用方法。