为什么Twig渲染空白页?

问题描述 投票:0回答:1

因此,在我的控制器中,我写道:

...
public function execute()
{
    $dbh = AppHelper::instance()->getConnection();
    $manager = new PostManager($dbh);
    $posts = $manager->getAllPosts();
    $twig = AppHelper::twig();
    // var_dump($twig);
    //var_dump($posts);
    $twig->render("posts.html.twig", array( 
        'title'=>'Все записи',
        //'posts'=>$posts,
        'debug' => true
        ));
}
...

我有一个基本的布局树枝模板:

<!DOCTYPE html>
<html>
<head>
    <title>
{% block title %}
{% endblock %} - Алёнин блог
    </title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width">
</head>
<body>
    <div>
        {% block content %}
        Приветствую вас в моём крутейшем блоге!!
        {% endblock %}
    </div>
</body>
</html>

我的帖子模板:

{% extends "main.html.twig" %}
{% block title %} {{ title }} {% endblock %}
{% block content %}
{% if posts is not empty %}
    <ul>
{% for post in posts %}
        <li>
            <h2>{{ post.title }}</h2><br />
            <div class="post_status">Статус: {{ post.name }}</div>
                   Опубликовано: 
                        {{ post.create_time }} <br />
             {{ post.body }}
        </li>
        <br /><hr />
{% endfor %}
    </ul>
{% else %}
    <p>
        Публикаций пока нет.
    </p>  
{% endif %}
{% endblock content %}

因此,正如您所看到的,这是非常基本的代码,这里没有什么复杂的,但是仍然无法正常工作...当我var_dump($ twig)时,我可以看到这是Twig_Environment类的有效实例,所以问题是'那里。 此外,我确定Twig正在查看我的模板-因为如果我写一些乱码而不是现有的文件名,则会收到错误消息“无法找到模板” posts.html.twigdfs”,因此问题出在其他地方...

我有一个注册表类,其中将Twig对象的实例保留为单例。 我将其实例化为:

class AppHelper {
...
private static $twig;
...

public static function twig()
{   
    $templateDir = "protected/views";
    $layoutDir = $templateDir . "/layouts"; 
    if ( ! isset(self::$twig) ) {
    $loader = new Twig_Loader_Filesystem(array($templateDir, $layoutDir));
    self::$twig = new Twig_Environment($loader);
    }
    return self::$twig;
}
}

有什么想法为什么我得到一个空的输出而没有任何错误?

php twig template-engine
1个回答
5
投票

我看不到将生成的模板返回到输出的内容……请使用下一个;

echo $twig->render(...);

这会将呈现的HTML结果带到输出中。

© www.soinside.com 2019 - 2024. All rights reserved.