我正在尝试在PhalconPHP(v 2.0.13)中加载模板,但即使是最简单的示例似乎也不起作用。我在这个例子中试图访问http://www.mysite.dev.fb/forms/。这是我的路由器:
$router->add(
'/forms/',
[
"namespace" => "Render\\Controller",
"controller" => "index",
"action" => "forms",
],
['GET']
);
路由工作,或者至少达到了操作中的代码(vardumps等)。
这是我的Controller动作变体。
public function formsAction()
{
}
在这种情况下,应该加载位于app / views / index / forms.volt的模板(我有一个扩展名为.phtml的文件的副本,用于调试目的),对吧?错了,显示空屏幕,错误日志中没有错误。
然后,我尝试选择视图,就像那样:
$this->view->setViewsDir(__DIR__ . '/../views/');
$this->view->pick('forms/contact');
文件app / views / forms / contact.volt也存在,具有完全权限。 Vardumping $ this-> view-> getContent()返回 null ,结果再次为空白屏幕,没有任何错误。
绝望地,我尝试直接渲染模板(对于此示例,我使用的是默认的Phalcon索引/索引模板),如下所示:
$this->view->start();
$this->view->render('index', 'index'); //Pass a controller/action as parameters if required
$this->view->finish();
唯一的区别是现在vardumping $ this-> view-> getContent()会返回一个空字符串,而不是 null 。
就像禁用自动渲染一样,但是以下行返回false(应该如此):
var_dump($this->view->isDisabled());
我没有想法,有人可以帮忙吗?如果我忘记包含某些内容,请回复,我会将其包括在内。
答案 0 :(得分:1)
您一定要检查PHP日志中的PHP错误。我还怀疑你的伏特声明可能是错误的。这是一个在我使用的服务中声明依赖注入视图组件的工作示例:
$di->setShared('view', function () use ($di,$config) {
$view = new View();
$view->setViewsDir($config->application->viewsDir); // path to directory with views, loaded from config in this case
$view->registerEngines(array(
'.volt' => function ($view, $di) use ($di, $config) {
$volt = new VoltEngine($view, $di);
$volt->setOptions(array(
'compiledPath' => $config->application->cacheDir, // path to cache dir, loaded from config in this case
'compiledSeparator' => '_'
));
return $volt;
},
'.phtml' => 'Phalcon\Mvc\View\Engine\Php'
));
return $view;
});
确保您的网络服务器有权读取缓存目录的视图和R / W权限。希望它能帮到你