扩展FOSUserBundle';s默认模板layout.html.twig

扩展FOSUserBundle';s默认模板layout.html.twig,twig,fosuserbundle,symfony,Twig,Fosuserbundle,Symfony,我正在尝试从FOSUserBundle运行基本用户登录。 我正在使用Symfony 3.0.6 我按照描述设置了FOSUserBundle中的所有内容: DB已启动并运行,除了我不知道如何覆盖FOSUserBundle中的layout.html.twig之外,一切似乎都很好。 为了实现以下目标,我遵循了以下描述: 我现在在“Resources/FOSUserBundle/views”文件夹中有一个文件“layout.html.twig”,其内容与上面提供的最后一个链接中的内容相同。 这会导致

我正在尝试从FOSUserBundle运行基本用户登录。 我正在使用Symfony 3.0.6

我按照描述设置了FOSUserBundle中的所有内容:

DB已启动并运行,除了我不知道如何覆盖FOSUserBundle中的layout.html.twig之外,一切似乎都很好。 为了实现以下目标,我遵循了以下描述:

我现在在“Resources/FOSUserBundle/views”文件夹中有一个文件“layout.html.twig”,其内容与上面提供的最后一个链接中的内容相同。 这会导致以下错误:

找不到模板“layout.html.twig”(已查找到: 第1行的FOSUserBundle::layout.html.twig中的[somePathInfo])

现在我将“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.
我被困在这里。。。 任何想法都是非常受欢迎的

编辑:composer安装的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
。找不到该文件将恢复到类似路径,但位于
供应商
目录内。如果您试图从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...
所以,这不是解决问题的办法


正如丹尼斯·阿利莫夫(Denis Alimov)在一篇评论中所建议的那样,确保你的模板正确地放置在你的
应用程序
目录中,而不是你的捆绑包中。

当你覆盖standart FOSUser布局时,你需要将你的布局放置在
应用程序/Resources/FOSUserBundle/views/layout.html.twig
中。太好了,你做到了。它只是一个布局,不应该扩展standart 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。您可能无法扩展某些内容,可能您对此模板有单独的完整布局。

我希望您在应用程序文件夹中创建了layout.html.twig,而不是在您的文件夹包中?@DenisAlimov是的,我创建了。关于如何找出发生了什么有什么想法吗?谢谢你的回答(以及@DenisAlimov)。“layout.html.twig”位于“./myProject/app/Resources/FOSUserBundle/views/layout.html.twig”。你的解释有道理。但是,我确实在提到的位置提供了“layout.html.twig”。所以我认为我的两次尝试都会成功。但仍然没有。关于如何找到原因,有什么提示吗?我编辑了关于FOSUserBundle安装路径的问题。这可能包括任何有用的信息吗?谢谢。你是对的。文档中说“此示例从应用程序的布局扩展布局模板…”。我误解了这一点,认为它是指捆绑包中的“layout.html.twig”。但是,删除延长线可以修复它。我这里还有一个问题:有人能告诉我如何将“FOSUserBundle”映射到存储在“/friendsofsymfony/user bundle/”下的bundle吗?我没有找到定义此映射的任何映射表或类似信息。当我想将捆绑文件夹添加到我的“app/Resources”文件夹时,我如何知道要使用哪个文件夹名称?@user3440145您应该在单独的问题中询问,并提供详细信息是的-我会这样做。