扩展 FOSUserBundle 的默认模板时 Symfony 服务器崩溃 layout.html.twig
Symfony Server crashes when extending FOSUserBundle's default template layout.html.twig
我正在尝试从 FOSUserBundle 获取基本用户登录 运行。
我正在使用 Symfony 3.0.6.
我按照说明设置了 FOSUserBundle 中的所有内容:
https://symfony.com/doc/master/bundles/FOSUserBundle/index.html
DB 已启动并且 运行 一切似乎都很好,除了我不知道如何从 FOSUserBundle 覆盖 layout.html.twig。
我遵循了这个描述来实现这一点:
https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html
我现在在文件夹 "Resources/FOSUserBundle/views" 中有一个文件 "layout.html.twig",其内容与上面提供的最后一个 link 中的内容相同。
这会导致以下错误:
Unable to find template "layout.html.twig" (looked into:
[somePathInfo]) in FOSUserBundle::layout.html.twig at line 1.
现在我将 "layout.html.twig" 模板中的第一行更改为
{% extends 'FOSUserBundle::layout.html.twig' %}
然后这会导致 symfony 服务器崩溃并显示
>php bin/console server:run -v
[OK] Server running on http://127.0.0.1:8000
// Quit the server with CONTROL-C.
RUN "C:\xampp\php\php.exe" "-S" "127.0.0.1:8000" "[PATH]\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\config\router_dev.php"
RES -1073741571 Command did not run successfully
[ERROR] Built-in server terminated unexpectedly.
我被困在这里...
欢迎任何想法。
编辑:作曲家安装的 FOSUserBundle(我通过当前的 PHP-Storm 插件使用)安装在路径:
[projectPath]\vendor\friendsofsymfony\user-bundle\Resources\views\layout.html.twig
然而,在文档中总是只提到 "FOSUserBundle",我不知道如何确定该映射是否适合我项目中的路径。
关于这个问题的任何提示也非常欢迎。
崩溃确实有道理。
当你写的时候:
{% extends 'FOSUserBundle::layout.html.twig' %}
Symfony 将首先尝试加载 app/Resources/FOSUserBundle/views/layout.html.twig
。找不到该文件将恢复到类似的路径,但在 vendor
目录中。如果您试图从您的 FOS 覆盖模板中扩展 FOS 的模板,那将创建递归循环:
app/Resource/FOSUserBundle/views/layout.html.twig
^^ extends
app/Resource/FOSUserBundle/views/layout.html.twig
^^ extends
app/Resource/FOSUserBundle/views/layout.html.twig
....
and so on...
所以,这不是解决问题的方法。
确保您的模板正确放置在您的 app
目录中,而不是像 Denis Alimov 在评论中建议的那样放置在您的包中。
当您覆盖标准 FOSUser 布局时,您需要将您的布局放入 app/Resources/FOSUserBundle/views/layout.html.twig
。太好了,你做到了。它只是一个布局,它不应该扩展标准 FOSUser 布局,所以删除行 {% extends 'FOSUserBundle::layout.html.twig' %}
。但通常开发人员会制作一个基本布局,在我的例子中是 \app\Resources\views\base.html.twig
,所以如果我想覆盖 fosuser 布局,我将在 app/Resources/FOSUserBundle/views/layout.html.twig
中有这样的东西
{% extends 'base.html.twig' %}
{% block title %}User Management{% endblock %}
{% block content %}
{% block fos_user_content %}{% endblock %}
{% endblock %}
在第一行中,您扩展了基本布局而不是 FOSUser。您可能不会扩展某些内容,也许您对此模板有单独的完整布局。
我正在尝试从 FOSUserBundle 获取基本用户登录 运行。 我正在使用 Symfony 3.0.6.
我按照说明设置了 FOSUserBundle 中的所有内容: https://symfony.com/doc/master/bundles/FOSUserBundle/index.html
DB 已启动并且 运行 一切似乎都很好,除了我不知道如何从 FOSUserBundle 覆盖 layout.html.twig。 我遵循了这个描述来实现这一点: https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html
我现在在文件夹 "Resources/FOSUserBundle/views" 中有一个文件 "layout.html.twig",其内容与上面提供的最后一个 link 中的内容相同。 这会导致以下错误:
Unable to find template "layout.html.twig" (looked into: [somePathInfo]) in FOSUserBundle::layout.html.twig at line 1.
现在我将 "layout.html.twig" 模板中的第一行更改为
{% extends 'FOSUserBundle::layout.html.twig' %}
然后这会导致 symfony 服务器崩溃并显示
>php bin/console server:run -v
[OK] Server running on http://127.0.0.1:8000
// Quit the server with CONTROL-C.
RUN "C:\xampp\php\php.exe" "-S" "127.0.0.1:8000" "[PATH]\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\config\router_dev.php"
RES -1073741571 Command did not run successfully
[ERROR] Built-in server terminated unexpectedly.
我被困在这里... 欢迎任何想法。
编辑:作曲家安装的 FOSUserBundle(我通过当前的 PHP-Storm 插件使用)安装在路径:
[projectPath]\vendor\friendsofsymfony\user-bundle\Resources\views\layout.html.twig
然而,在文档中总是只提到 "FOSUserBundle",我不知道如何确定该映射是否适合我项目中的路径。 关于这个问题的任何提示也非常欢迎。
崩溃确实有道理。
当你写的时候:
{% extends 'FOSUserBundle::layout.html.twig' %}
Symfony 将首先尝试加载 app/Resources/FOSUserBundle/views/layout.html.twig
。找不到该文件将恢复到类似的路径,但在 vendor
目录中。如果您试图从您的 FOS 覆盖模板中扩展 FOS 的模板,那将创建递归循环:
app/Resource/FOSUserBundle/views/layout.html.twig
^^ extends
app/Resource/FOSUserBundle/views/layout.html.twig
^^ extends
app/Resource/FOSUserBundle/views/layout.html.twig
....
and so on...
所以,这不是解决问题的方法。
确保您的模板正确放置在您的 app
目录中,而不是像 Denis Alimov 在评论中建议的那样放置在您的包中。
当您覆盖标准 FOSUser 布局时,您需要将您的布局放入 app/Resources/FOSUserBundle/views/layout.html.twig
。太好了,你做到了。它只是一个布局,它不应该扩展标准 FOSUser 布局,所以删除行 {% extends 'FOSUserBundle::layout.html.twig' %}
。但通常开发人员会制作一个基本布局,在我的例子中是 \app\Resources\views\base.html.twig
,所以如果我想覆盖 fosuser 布局,我将在 app/Resources/FOSUserBundle/views/layout.html.twig
中有这样的东西
{% extends 'base.html.twig' %}
{% block title %}User Management{% endblock %}
{% block content %}
{% block fos_user_content %}{% endblock %}
{% endblock %}
在第一行中,您扩展了基本布局而不是 FOSUser。您可能不会扩展某些内容,也许您对此模板有单独的完整布局。