我正在尝试使用Twig和PHP创建内容管理系统,但是当我打开页面时,它表示没有条目。我已使用var_dump()
验证了这一点。
路线代码:
$app->get('/articles', function() use ($app) {
$approved_articles = $db_bsa->query("
SELECT id, label, slug
FROM approved_articles
")->fetchAll(PDO::FETCH_ASSOC);
var_dump($approved_articles);
$app->render('main/articles.php');
})->name('articles');
视图代码:
{% extends 'templates/default.php' %}
{% block title %}Articles{% endblock %}
{% block content %}
<article class="article">
<header>
<h2>Articles</h2>
</header>
<footer>
<p class="post-info">A Directory Style Listing of our Active Articles</p>
</footer>
{% if approved_articles %}
<ul>
{% for approved_article in approved_articles %}
<li>{{ approved_article.label }}</li>
{% endfor %}
</ul>
{% else %}
<p>No articles at the moment...</p>
{% endif %}
</article>
{% endblock %}
此外,在此处发布包含更多背景信息的较长链:https://www.codecourse.com/forum/topics/problems-using-twig-and-php/329
感谢您的帮助!
答案 0 :(得分:3)
渲染模板时,需要将approved_articles
传递给twig。
$app->render('main/articles.php', array('approved_articles' => $approved_articles));
Twig不会自动在控制器中找到变量。您需要将模板变量(如approved_articles
)显式传递给Twig渲染引擎。
作为旁注,您的articles.php
模板文件以.php
扩展名命名,但它实际上不是PHP文件。通常,模板以.twig
扩展名命名。