phalcon中为什么用tools生成的单模块项目是volt引擎,但是多模块用的是.phtml呢?

在phalcon中,用tools生成的单模块项目,默认是.volt

单模块视图文件目录

但是生成的多模块是.phtml

多模块视图文件目录

如何也让多模块也用.volt引擎呢?

ps:光改文件后缀不好使

阅读 3.4k
2 个回答

如果是这种项目结构
phalcon项目结构

只需要将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;
                },
            ]
    );
    
    

这是我的使用方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题