2013-02-05 49 views
0

因为我想重写Symfony2中FOS UserBundle的模板,所以我尝试调整我的自定义UserBundle。覆盖Symfony2中的FOS UserBundle(也使用Fr3d ldap包)

我制作了模板(并遵循了与FOS捆绑包完全相同的结构),并且我为每个控制器制作了一个“空”扩展名。

但是,一旦我使覆盖活动,清除缓存并尝试登录,出现错误,我不明白为什么。错误读取:模板 的渲染过程中

异常被抛出(“路线‘登录’不存在”。)在 “FOSUserBundle:安全:login.html.twig”。

这是我自己的例子SecurityController:

<?php 

namespace R\Bundle\UserBundle\Controller; 

use Symfony\Component\HttpFoundation\RedirectResponse; 
use FOS\UserBundle\Controller\SecurityController as BaseController; 

class SecurityController extends BaseController 
{ } 

通过激活倍率(清除缓存之前),我的意思是取消注释这一行:

<?php 

namespace R\Bundle\UserBundle; 

use Symfony\Component\HttpKernel\Bundle\Bundle; 

class RUserBundle extends Bundle 
{ 
public function getParent() 
{ 
    return 'FOSUserBundle'; <-- this line activates or deactivates the override 
} 
} 

的login.html的。在我自己的UserBundle中,应该覆盖FOS UserBundle中的一个的树枝模板仍然是原始模板的精确副本(如果覆盖未激活,则可以正常工作)。

我想我也需要重写路由文件,但如果我将它们复制到我的自定义UserBundle中,错误仍然存​​在。

回答

1

login路线不包括在内。您需要包括它,看step 6

# app/config/routing.yml 
fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 
+0

你提到的路线包括,但我只是在一个完全不同的领域发现错误。在一个父母的父母的模板中,包含了一个孩子,在安装FOS UserBundle之前仍然使用旧的登录路径... :)不知何故错误只是现在出现,Symfony2并不总是非常准确地指出Twig模板中的错误究竟发生在哪里。我们又失去了两个小时......感谢您的帮助! –

+0

不用担心@保罗。无论如何,很高兴你发现了这个问题。 – Mick

0

错误实际上是完全不同的东西:

树枝片段被错误要求(在模板层次复杂),它仍然含有一个旧的路径名称。由于这条路径被称为登录,我确信这个错误与我最近激活的UserBundle有关。所以Symfony2指出我完全错误的位置;错误不会被发现在任何地方接近;)