子页面扩展 base.html.twig 但未呈现 base.html.twig 的内容

Posted

技术标签:

【中文标题】子页面扩展 base.html.twig 但未呈现 base.html.twig 的内容【英文标题】:Child page extends base.html.twig BUT content of base.html.twig is not rendered 【发布时间】:2022-01-19 10:40:11 【问题描述】:

我正在使用 sulu cms 和 symfony。刚开始做这个项目。 这是我的 base.html.twig

<!DOCTYPE html>
<html lang=" app.request.locale|split('_')[0] ">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

% block meta %
    % include "@SuluWebsite/Extension/seo.html.twig" with 
        "seo": extension.seo|default([]),
        "content": content|default([]),
        "localizations": localizations|default([]),
        "shadowBaseLocale": shadowBaseLocale|default(),
     %
% endblock %

% block style %% endblock %
</head>
<body>
<header>
    % block header %
        <nav>
        </nav>
    % endblock %
</header>

<form action=" path('sulu_search.website_search') " method="GET">
    <input name="q" type="text" placeholder="Search"/>
    <input type="submit" value="Go"/>
</form>

<main>
    % block content %% endblock %
</main>

<footer>
    % block footer %
        <p>Copyright  'now'|date('Y')  SULU</p>
    % endblock %
</footer>

% block javascripts %% endblock %
</body>
</html>

我在 event.html.twig 中扩展它

% extends "base.html.twig" %

% block content %
<h1>This is Event Template</h1>
<h1> content.title </h1>
<h2> content.subtitle </h2>

% for image in content.photo %
    <img src=" image.thumbnails['500x'] "  title=" image.description|default(image.title) ">
% endfor %
% endblock %

但是渲染的页面只显示子内容

<h1>This is Event Template</h1>
<h1>Veranstaltungstitel</h1>
<h2></h2>

父基模板未呈现的原因可能是什么? 用谷歌找不到类似的东西。

更新

我在 Windows 10 Pro 计算机上,我克隆了一个 git 存储库,其中包含其他人在 Linux 系统上创建的 sulu cms / symfony 项目。

我将 .env 文件更改为 APP_ENV=dev

我在 Apache (MAMP) 和 mysql (MAMP) 数据库上运行该项目。数据库已连接,我可以在管理面板中查看数据,并使用phpmyadmin查看数据库中更改的数据。

在我的电脑上安装了 Symfony CLI v4.26.11 版本。

【问题讨论】:

修改base后是否清除缓存? 是的,我清除了缓存。 除此之外,我没有任何解释,也无法重现。您是否扩展了正确的base 模板 是的,我正在扩展正确的基本模板。 @guteFee 你能提供base.html.twigevent.html.twig 的相对路径吗? Symfony 的版本是多少? 【参考方案1】:

base.html.twig 页面未渲染的原因是主题模板覆盖了默认主题。

【讨论】:

【参考方案2】:

您是否像文档中那样使用create-project 命令创建了 sulu 项目。那么你应该在dev 环境下。通过进入您的本地.env.local 并检查它是否设置为APP_ENV=dev 进行检查,以便自动检测更改并且不需要清除缓存。仅供开发使用!!!

如果您在 prod 服务器上,请确保清除所有缓存。这包括adminwebsite 缓存:

bin/adminconsole cache:clear
bin/website cache:clear

如果这仍然无助于检查树枝模板的任何编辑是否对您的前端产生任何影响。还可以尝试通过删除 var/cache 目录来删除所有缓存:

rm -rf var/cache

如果不是这种情况,则hint 表明您的机器或服务器已激活opcache 并且您的所有 PHP 文件都已缓存。如果您在开发机器上,则应配置 opcache 以检查文件时间戳,请参阅:

https://www.php.net/manual/de/opcache.configuration.php#ini.opcache.validate-timestamps

如果您在生产服务器上,它会重新启动您的网络服务器和/或 php 进程,或者使用如下缓存工具:

https://github.com/gordalina/cachetool

清除缓存。

【讨论】:

感谢您的快速回复。即使我在 .env 中将其设置为 APP_ENV=dev 我清除了缓存。缓存被清除,但弹出一个错误,指出内存不足。我将控制台和 Apache php 的 php.ini 设置为 128M。现在我在 php.ini 中禁用了 opcache opcache.enable = 0 并重新启动了服务器。没有区别。 尝试使用php内部webserver进行开发。见:docs.sulu.io/en/2.3/book/… 我的网站需要三个虚拟主机,这就是我使用 Apache (MAMP) 的原因。 sulu 也确实读取了 base.html.twig 模板(如果找不到它会引发错误)但不会呈现它。

以上是关于子页面扩展 base.html.twig 但未呈现 base.html.twig 的内容的主要内容,如果未能解决你的问题,请参考以下文章

通过相对路径获取Twig文件,然后将其包含在app文件夹中的base.html.twig中

Symfony 3 - 模板“SonataPageBundle::base_error.html.twig”上的块“标题”不存在

模板仅在 html 中显示

在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息

如何在 Symfony (Twig) 中包含可重用的小部件?

Symfony2 中的 Twig CamelCase 过滤器