在自己的包中覆盖FosUserBundle模板,而不是app / Resources

时间:2016-11-14 00:36:00

标签: symfony twig fosuserbundle

根据此http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_templates.html

我可以覆盖app / Resources目录中的FOSUserBundle模板或创建子包。

有没有办法将这些模板放入我自己的bundle目录中?

我尝试添加:

twig:
   debug:            "%kernel.debug%"
   strict_variables: "%kernel.debug%"
   paths:
       '%kernel.root_dir%/../src/AppBundle/Resources/FOSUserBundle/views/': FOSUSerBundle

到我的config.yml

5 个答案:

答案 0 :(得分:0)

不,模板名称在FOSUserBundle的控制器中是硬编码的,因此您无法将它们放在自己的捆绑包中。 (除非你完全覆盖所有控制器)

答案 1 :(得分:0)

不,你不能。模板名称在fosub控制器中是硬编码的。但, 作为一种解决方法,您可以在重写的模板中包含您自己的模板。对于样本,请执行以下操作:

// app/Resources/FOSUserBundle/views/layout.html.twig
{% include '@YourBundleName/layout.html.twig' %}

答案 2 :(得分:0)

我在FosUserBundle版本中开发的一个项目中为symfony2.3做了模板覆盖。 请尝试以下可能对您有帮助的代码

<强> config.yml

twig:
   debug:            "%kernel.debug%"
   strict_variables: "%kernel.debug%"

<强> FrontBundle /控制器/ LoginController.php

<?php
namespace Dhi\UserBundle\Controller;

use FOS\UserBundle\Controller\SecurityController as Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\HttpFoundation\RedirectResponse;

class LoginController extends Controller
{
    protected function loginController(array $data)
    {
        $request = $this->get('request');
        return $this->render('FrontBundle:login:login.html.twig');
    }
}

<强> FrontBundle /资源/视图/登录/ login.html.twig

{% extends "DhiUserBundle::layout.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block body %}
    {% block fos_user_content %}

        {% trans_default_domain 'FOSUserBundle' %}

        // Your login form code here

    {% endblock fos_user_content %}
{% endblock body %}

答案 3 :(得分:0)

您可以查看您的FOSUser和Symfony版本并阅读此主题:https://github.com/FriendsOfSymfony/FOSUserBundle/issues/2439

我遇到过这个错误,它不允许我覆盖FOS模板,因为他们使用(在最新版本2.0.0-beta中)命名空间语法(带有@符号的语法)来链接模板。因此,在Symfony的2.7.23版本之前,您无法通过将正确的命名文件放在如下所述的相同文件夹中来覆盖模板:http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html

答案 4 :(得分:0)

我今天遇到了同样的问题。我的config.yml文件如下:

# Twig Configuration
twig:
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'
    paths:
        "%kernel.root_dir%/../src/WebBundle/Resources/views/user/": FOSUser

我在WebBundle / Resources / views / user /下添加了所有FOSUserBundle模板,并在所有模板中进行了一些扩展/包含更改,现在它可以正常工作。