Phalcon 视图未加载
Phalcon view not loaded
我正在尝试在 PhalconPHP (v 2.0.13) 中加载模板,但即使是最简单的示例似乎也无法正常工作。在此示例中,我试图访问 http://www.mysite.dev.fb/forms/。这是我的路由器:
$router->add(
'/forms/',
[
"namespace" => "Render\Controller",
"controller" => "index",
"action" => "forms",
],
['GET']
);
路由有效,或者至少达到了操作中的代码(vardumps 等)。
这是我的控制器动作变体。
变体 1
public function formsAction()
{
}
在这种情况下,应该加载位于 app/views/index/forms.volt 的模板(我有一个扩展名为 .phtml 的文件副本,用于调试目的),对吧?错误,显示空白屏幕,错误日志中没有错误。
变体 2
然后,我尝试选择视图,就像这样:
$this->view->setViewsDir(__DIR__ . '/../views/');
$this->view->pick('forms/contact');
文件 app/views/forms/contact.volt 也存在,具有完全权限。 Vardumping $this->view->getContent() returns null 结果又是一个没有任何错误的空白屏幕。
变体 3
绝望地,我尝试直接渲染模板(在本例中我使用默认的 Phalcon index/index 模板),如下所示:
$this->view->start();
$this->view->render('index', 'index'); //Pass a controller/action as parameters if required
$this->view->finish();
唯一的区别是现在 vardumping $this->view->getContent() returns 一个空字符串,而不是 null.
好像自动渲染被禁用了,但是下面这行 returns 错误(它应该如此):
var_dump($this->view->isDisabled());
我没主意了,有人能帮忙吗?如果我忘记包含某些内容,请回复,我会包含它。
您一定要检查 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 缓存目录的权限。希望对你有所帮助
我正在尝试在 PhalconPHP (v 2.0.13) 中加载模板,但即使是最简单的示例似乎也无法正常工作。在此示例中,我试图访问 http://www.mysite.dev.fb/forms/。这是我的路由器:
$router->add(
'/forms/',
[
"namespace" => "Render\Controller",
"controller" => "index",
"action" => "forms",
],
['GET']
);
路由有效,或者至少达到了操作中的代码(vardumps 等)。
这是我的控制器动作变体。
变体 1
public function formsAction()
{
}
在这种情况下,应该加载位于 app/views/index/forms.volt 的模板(我有一个扩展名为 .phtml 的文件副本,用于调试目的),对吧?错误,显示空白屏幕,错误日志中没有错误。
变体 2
然后,我尝试选择视图,就像这样:
$this->view->setViewsDir(__DIR__ . '/../views/');
$this->view->pick('forms/contact');
文件 app/views/forms/contact.volt 也存在,具有完全权限。 Vardumping $this->view->getContent() returns null 结果又是一个没有任何错误的空白屏幕。
变体 3
绝望地,我尝试直接渲染模板(在本例中我使用默认的 Phalcon index/index 模板),如下所示:
$this->view->start();
$this->view->render('index', 'index'); //Pass a controller/action as parameters if required
$this->view->finish();
唯一的区别是现在 vardumping $this->view->getContent() returns 一个空字符串,而不是 null.
好像自动渲染被禁用了,但是下面这行 returns 错误(它应该如此):
var_dump($this->view->isDisabled());
我没主意了,有人能帮忙吗?如果我忘记包含某些内容,请回复,我会包含它。
您一定要检查 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 缓存目录的权限。希望对你有所帮助