Phalcon视图未加载

时间:2016-09-07 08:22:23

标签: php phalcon volt phalcon-routing

我正在尝试在PhalconPHP(v 2.0.13)中加载模板,但即使是最简单的示例似乎也不起作用。我在这个例子中试图访问http://www.mysite.dev.fb/forms/。这是我的路由器:

$router->add(
    '/forms/',
    [
            "namespace" => "Render\\Controller",
            "controller" => "index",
            "action" => "forms",
    ],
    ['GET']

);

路由工作,或者至少达到了操作中的代码(vardumps等)。

这是我的Controller动作变体。

变式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()返回 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());

我没有想法,有人可以帮忙吗?如果我忘记包含某些内容,请回复,我会将其包括在内。

1 个答案:

答案 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权限。希望它能帮到你