覆盖"更改密码"来自FOS用户包的模板

时间:2014-06-24 12:25:42

标签: php symfony fosuserbundle

我做了一些研究,遗憾的是找不到任何帮助。

所以我将FOSUserBundle ChangePasswordAction呈现为我的模板,但它显示了供应商提供的默认模板。

我呈现控制器的模板:

{% block body %}
    <h2>Einstellungen</h2>
    <br/>
    <h4>Ändern Sie ihr Passwort</h4>
    {% render controller("FOSUserBundle:ChangePassword:changePassword") %}
{% endblock %}

我的ChangePasswordAction模板,路径为app/Resources/FOSUserBundle/views/ChangePassword/changePassword.html.twig

{% block fos_user_content %}
    {% trans_default_domain 'FOSUserBundle' %}

    <form action="{{ path('fos_user_change_password') }}" {{ form_enctype(form) }} method="POST" class="fos_user_change_password">
        {{ form_start(form) }}
            {{ form_errors(form) }}
            <p><span class="edit_left_date">{{ form_label(form.current_password, 'Jetziges Passwort') }} </span>
                <span class="edit_right">{{ form_widget(form.current_password) }}</span></p>
            <p><span class="edit_left_date">{{ form_label(form.new_password, 'Neues Passwort') }} </span>
                <span class="edit_right">{{ form_widget(form.new_password) }}</span></p>
            <p><span class="edit_left_date">{{ form_label(form.new_password_confirmation 'Bestätigen Sie ihr neues Passwort') }} </span>
                <span class="edit_right">{{ form_widget(form.new_password_confirmation) }}</span></p>
            <div>
                <input type="submit" value="{{ 'Speichern'|trans }}" />
            </div>
        {{ form_end(form) }}
    </form>
{% endblock %}

让我发疯的是,我在我的layout.html.twig中以相同的方式从FOSUserBundle渲染登录控制器,并且它在那里工作得很好。

布局中的代码片段:

{% block sidebar %}
    {% render controller("FOSUserBundle:Security:Login") %}
{% endblock %}

app/Resources/FOSUserBundle/views/Security/login.html.twig

{% block fos_user_content %}
    <div class="teaser-header">Login</div>
        <form role="form" action="{{ path("fos_user_security_check") }}" method="post">
            <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
            <div class="form-group">
                <label for="username">{{ 'MyLog Username'|trans }}</label>
                <input class="form-control" type="text" id="username" name="_username" placeholder="Your Username" required="required" />
            </div>
            <div class="form-group">
                <label for="password">{{ 'Password'|trans }}</label>
                <input class="form-control" type="password" id="password" name="_password" placeholder="Your Password" required="required" />
            </div>
            <input type="submit" id="_submit" name="_submit" value="{{ 'Segel setzen'|trans }}" />
            <a id="passwordForget" href={{ path('fos_user_resetting_request') }}>Password vergessen?</a>
        </form>
{% endblock %}

我错过了什么或者我做错了什么,所以我无法覆盖changePassword模板?

3 个答案:

答案 0 :(得分:3)

从评论转到答案:

自添加新模板以来,您是否清除了缓存?

答案 1 :(得分:1)

您基本上做的是创建自己的用户包+将其设置为FOS用户包的父级。 (你应该已经完成​​了这一步)

然后将模板设置为: MyCompany/MyProject/UserBundle/Resources/views/Resetting/request.html.twig

由于FOS用户包中的文件位于同一位置,因此您的文件将覆盖该模板。

答案 2 :(得分:0)

如果您认为自己已正确完成所有操作但仍无法正常工作,则可以尝试使用终端中的Symfony命令清除缓存,或者在某些情况下手动删除缓存目录 - & #39;应用程序/高速缓存的/ dev&#39;或者&#39; app / cache / prod&#39;。