除非您为 Volt 指定不同的文件夹来编译其模板,否则视图文件所在的文件夹将用于创建相关的编译文件。
您可以通过在注册服务时设置正确的选项来更改此行为:
use \Phalcon\Mvc\View as PhView;
use \Phalcon\Mvc\View\Engine\Volt as PhVolt;
...
public function initView($options = array())
{
$config = $this->di['config'];
$di = $this->di;
$this->di['volt'] = function ($view, $di) use ($config) {
$volt = new PhVolt($view, $di);
$volt->setOptions(
array(
'compiledPath' => $config->app_volt->path,
'compiledExtension' => $config->app_volt->extension,
'compiledSeparator' => $config->app_volt->separator,
'stat' => (bool) $config->app_volt->stat,
)
);
return $volt;
};
/**
* Setup the view service
*/
$this->di['view'] = function () use ($config, $di) {
$view = new PhView();
$view->setViewsDir($config->app_path->views);
$view->registerEngines(array('.volt' => 'volt'));
return $view;
};
}
$config
它将存储您需要的所有信息。通过使用,compiledPath
您可以指示 Volt 在那里编译模板,然后将它们提供给前端。该文件夹需要对运行您的 Web 服务器www-data
或其他服务器的用户是可写的,并且可以位于您的公用文件夹之外。
我通常使用的文件结构是:
app
\controllers
\models
\views
public
\js
\css
\img
var
\volt
\logs
\config
\cache