【发布时间】:2017-01-14 20:10:43
【问题描述】:
我正在尝试在 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 的文件副本,用于调试目的),对吗?错误,显示一个空白屏幕,errorlog中没有错误。
变体 2
然后,我尝试选择视图,如下所示:
$this->view->setViewsDir(__DIR__ . '/../views/');
$this->view->pick('forms/contact');
文件 app/views/forms/contact.volt 也存在,具有完全权限。 Vardumping $this->view->getContent() 返回 null 并且结果再次是一个没有任何错误的空白屏幕。
变体 3
无奈之下,我尝试像这样直接渲染模板(在本示例中,我使用的是默认的 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());
我没有想法,有人可以帮忙吗?如果我忘记包含某些内容,请回复,我会包含它。
【问题讨论】:
-
您是否正确设置了视图组件?这是我在服务中注册的视图组件:pastebin.com/SdX121d8。还要确保 Phalcon 对缓存文件夹具有 r/w 权限。检查 PHP 日志
-
我的猜测是
setViewsDir(__DIR__ . '/../views/')没有设置正确的路径。您在哪里注册 View 服务?在 index.php 文件中?如果视图位于/app/views/中,而您的index文件位于/public/index.php中,则路径应为__DIR__ . '../app/views/'。 -
是的,我的 Volt 引擎定义中的某些内容看起来很可疑,我添加了 Luke 示例中的 phtml 行,是的,.phtml 模板已正确加载。谢谢,我会在有任何进展时报告(无论是积极的还是我再次陷入困境)。
-
很高兴听到这个消息。我将添加我的示例代码作为答案,以便在 pastebin 被关闭的情况下有人可以找到答案。
标签: php phalcon volt phalcon-routing