覆盖Symfony2中的FOS UserBundle(也使用Fr3d ldap包)

时间:2013-02-05 15:03:44

标签: templates authentication symfony twig fosuserbundle

因为我想覆盖Symfony2中FOS UserBundle的模板,我正在尝试调整我的自定义UserBundle。

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

但是,只要我使覆盖激活,清除缓存并尝试登录,就会出现错误,我不明白为什么。错误如下:

  

在渲染模板期间抛出了异常   (“路线”登录“不存在。”)in   “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
 }
}

我自己的UserBundle中的login.html.twig模板,它应该覆盖FOS UserBundle中的一个模板,它仍然是原始模板的精确副本(如果覆盖不活动,则该模板运行正常)。 p>

我假设我还需要覆盖路由文件,但是如果我将它们复制到我的自定义UserBundle中,则错误仍然存​​在。

2 个答案:

答案 0 :(得分:1)

不包括login路线。您需要加入它,请参阅step 6

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

答案 1 :(得分:0)

错误实际上完全不同:

错误地调用了一个twig片段(在复杂的模板层次结构中),它仍然包含一个旧的路径名。由于这条路径被称为登录,我确信该错误与我新激活的UserBundle有关。所以Symfony2向我指出了一个完全错误的位置;在那附近找不到错误;)