搜尋

首頁  >  問答  >  主體

php - phalcon中volt引擎不起作用

生成的项目多模块项目,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;
        };

而项目目录如下图:

PHP中文网PHP中文网2773 天前548

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-04-11 10:07:05

    贴你的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,程序应该都能正常加载,只是相对路径可能错误。以此为突破口去排查问题~

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-11 10:07:05

    $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);

    回覆
    0
  • 阿神

    阿神2017-04-11 10:07:05

    嗯,把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;
            };

    回覆
    0
  • 取消回覆