在将Symfony从2.6版升级到3.0版之后,我正在尝试启动和运行FOSUserBundle。在2.6中,我基本上有一个站点,css和js,我们是由assetic处理的,FOSUserBundle已经启动并运行了一个通过理论配置的SQLite。
因此,在再次启动这个项目之前,我进行了升级,因为2.6不再受支持。
因为我刚接触过Symfony,所以我所做的每件事或多或少都是从文档复制过来的。FOSUserBundle在开发模式下显示为一个启用的包。我的代码在/src/AppBundle中。我使用的是2.0dev版本的FOSUserBundle (准确地说,是e770bfa)。
下面是我的模板的一部分:
<li>
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
<a href="{{ path('fos_user_security_logout') }}">
{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
</a>
{% else %}
<a href="{{ path('fos_user_security_login') }}">
{{ 'layout.login'|trans({}, 'FOSUserBundle') }}
</a>
{% endif %}
</li>
在2.6岁的时候
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.yml"
在my /src/AppBundle/config/routing.xml中。如果我保持这种方式,我甚至不能加载网站,因为一个例外
"Unable to generate a URL for the named route "fos_user_security_login" as such route does not exist."
将其放入/app/config/routing.yml之后,我的站点将显示/src/AppBundle/config/routing.xml中定义的其他路由。所以这份文件没什么问题。
当站点出现时,链接的翻译就会中断。
{{ 'layout.login'|trans({}, 'FOSUserBundle') }}
显示为"layout.login“,而不是像以前那样用2.6登录。如果我单击链接登录(路径与预期的/login相同)。塞福尼告诉我:
Unable to find template "AppBundle:Pages:login.html.twig".
我不明白为什么它要在AppBundle文件夹中寻找它?根据我所读到的,它应该在FOSUserBundle文件夹或/app/Ressources/FOSUserBundle/.这就是我把它用来覆盖默认模板的地方。我确认这仍然是覆盖模板的方式,即使使用3.0版本也是如此。
我还尝试将模板放在AppBulde/Pages/文件夹中。然后,它会找到模板,但仍然不起作用。
我多次清除缓存(这解决了assetic的另一个问题)。
对我来说,我似乎错过了让FOSUserBundle工作的一个重要部分。对我可能忽略的东西有什么建议吗?
发布于 2016-06-21 17:10:30
FOSUserBundle似乎使用'xml‘文件进行路由,并且在您的routing.xml中包含一个'yml’文件:
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.yml"
https://stackoverflow.com/questions/35527853
复制相似问题