生成的项目多模块项目,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;
};
而项目目录如下图:
迷茫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,程序应该都能正常加载,只是相对路径可能错误。以此为突破口去排查问题~
天蓬老师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);
阿神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;
};