Home  >  Q&A  >  body text

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

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

但是生成的多模块是.phtml

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

ps:光改文件后缀不好使

怪我咯怪我咯2721 days ago354

reply all(2)I'll reply

  • 阿神

    阿神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之后用开发工具生成的目录不是这种结构了。

    reply
    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;
                    },
                ]
        );
        
        

    这是我的使用方法。

    reply
    0
  • Cancelreply