用户k3fe6y3kps 发布于 2017-05-12 01:03

生成的项目多模块项目,volt引擎不起作用,js,css加载没反应,partials也不好使,视图没法输出,貌似是volt引擎没有注册成功还是其他原因?

ps:但是自带引擎。后缀为.phtml的格式的文件按照手册上是可以引入js,css,partials文件。在上面的基础上,把后缀变成.volt格式后,还需要改什么地方,才好使呢?

目录结构

下面是config/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\Php'
    ));

    return $view;
});

模块下的 Module.php 还是生成项目生产时的,没有变动!

在 views/index.volt中

加载partials

{{ partial("partials/header") }}
{{ partial("partials/main") }}
{{ partial("partials/footer") }}

加载js

{{ javascript_include("/js/1.11.3.jquery.min.js") }}

---------------2016年8月27日 23:00:00 补充------------------

Module.php中的路径

$di['view'] = function () {
            $view = new View();
            $view->setViewsDir(__DIR__ . '/views/');

            return $view;
        };

而项目目录如下图:

3 个回答
  • 贴你的volt模板在DI中注册的代码部分
    贴你的加载JS、CSS的代码部分
    贴你使用partial的代码部分
    贴代码!贴代码!贴代码!重说三!不贴代码就提代码相关的问题,都是耍流氓!

    ----------------2016.08.26更新---------------------------

    1、检查“$config->application->viewsDir”的值是否指向你的“apps/frontend/views”目录
    2、检查“$config->application->cacheDir”的值(原理同上)
    3、检查你的JS、CSS加载的相对路径是否正确
    4、然后把DI中注册view代码里的这一行注释掉:“'.phtml' => 'PhalconMvcViewEnginePhp'”

    不论扩展名是.phtml还是.volt,程序应该都能正常加载,只是相对路径可能错误。以此为突破口去排查问题~

    2017-05-12 15:48 回答
  • $di->set('view', function () use ($config) {
        $view = new View();
        $view->setViewsDir(APP_PATH . $config->application->layouts_dir);
        $view->registerEngines(
            array(
                '.volt'  => function ($view, $di) use ($config) {
                    $volt = new VoltExtension($view, $di);
                    $volt->setOptions(
                        array(
                            'compiledPath'      => APP_PATH . $config->application->cache_dir,
                            'compileAlways'     => $config->application->debug,
                            'compiledSeparator' => '_',
                            'layoutDir'         => $config->application->layouts_dir,
                        ));
                    if (!empty($config->volt->extensions)) {
                        foreach ($config->volt->extensions as $extension_class_name) {
                            $di->get('volt.extension')->register($volt, new $extension_class_name($di));
                        }
                    }
                    return $volt;
                },
                '.phtml' => 'Phalcon\Mvc\View\Engine\Php'
                ......
            ));
        return $view;
    }, true);
    2017-05-12 08:13 回答
  • 嗯,把Module.php中的下面这段代码注释掉就可以用volt了

    但是,视图中的每一个文件都会生成一个类似于test.volt.php的文件,这个文件应该放在caches中最好,这应该是phalcon-devtools中生成项目时的问题吧!

    我是用 phalcon project test modules 生成的项目,不知道还有没有其他办法!

    $di['view'] = function () {
                $view = new View();
                $view->setViewsDir(__DIR__ . '/views/');
    
                return $view;
            };
    2017-05-12 04:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
活跃用户
  • 1
    问道摩托
  • 2
    袁广龙976丶
  • 3
    逍遥子
  • 4
    亮仔
  • 5
    芙蓉花
  • 6
    作小die_syj
  • 7
    王丽珠景平怡伦_621
  • 8
    adfa3sd5f6a
  • 9
    欣欣大妮
  • 10
    狂风DKC想毕业321
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有