symfony - Sonata 管理包 + Sonata 用户包 : Override Login Form

标签 symfony fosuserbundle sonata-admin sonata sonata-user-bundle

我知道这个主题已经开放,但几个月后他们根本没有答案,当我尝试回答以了解这位作者是否有任何解决方案时......我的评论被删除了。所以我要再次发布这个问题。

我正在使用 SonataAdminBunbdle 和 SonataUserBundle 进行管理。 除少数特定问题外,一切都运行良好。

现在,我的问题。我想覆盖默认登录表单。 但是,即使我尝试了一切,也没有任何效果。

1) 我试图覆盖 FOSUserBundle 登录表单,如 official documentation 中所述.

我把这个文件放到了正确的路径

{% extends "FOSUserBundle::layout.html.twig" %}

{% block fos_user_content %}
    AZERTY
{% endblock fos_user_content %}

完全删除了原始登录表单,但没有任何变化,我仍然有相同的默认登录表单。

2) 对SonataAdminBundle 使用相同的方法但他们没有登录表单模板。

3) 然后再一次 SonataUserBundle但我没有找到任何内容来覆盖登录表单模板。

我没有解决方案,这就是为什么我要向他们寻求帮助。 我找到了如何通过直接修改供应商的文件来更改登录表单:

// vendor/sonata-project/user-bundle/Resources/views/Admin/Security/login.html.twig    

{% extends base_template %}

{% block content %}
    <div class="connection">
        <form action="{{ path("sonata_user_admin_security_check") }}" method="post">

            {% if error %}
                <div class="alert alert-error">{{ error|trans({}, 'SonataUserBundle') }}</div>
            {% endif %}

            <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

            <div class="control-group">
                <label for="username">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>

                <div class="controls">
                    <input type="text" id="username" name="_username" value="{{ last_username }}" class="big sonata-medium"/>
                </div>
            </div>

            <div class="control-group">
                <label for="password">{{ 'security.login.password'|trans({}, 'FOSUserBundle') }}</label>

                <div class="controls">
                    <input type="password" id="password" name="_password" class="big sonata-medium" />
                </div>
            </div>

            <div class="control-group">
               <label for="remember_me">
                    <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
                    {{ 'security.login.remember_me'|trans({}, 'FOSUserBundle') }}
                </label>
            </div>

            <div class="form-actions">
                <input type="submit" class="btn btn-primary" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}" />
            </div>
        </form>
    </div>
{% endblock content %}

所以,最后我想覆盖这个特定的文件,或者找到一种方法来更改配置文件中的模板路径。

有人已经覆盖了这个登录表单模板吗?

最佳答案

如果您将自定义 login.html.twig 放入:

app/Resources/SonataUserBundle/views/Admin/Security

它会起作用。

您可以阅读 more关于在 Symfony 中覆盖模板。

关于symfony - Sonata 管理包 + Sonata 用户包 : Override Login Form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34793762/

相关文章:

php - 未登录重定向到 "/login"

symfony - PHP 7 和 Doctrine Group 使用

symfony - bool 逻辑不像我在 Twig 中所期望的那样工作

Symfony2.5 + FOSUserBundle 检查路径显然没有找到

php - FOSUserBundle 使用电子邮件登录 (Symfony2)

javascript - 如何绑定(bind)到 select2 更改事件并获取所选值

datepicker - 奏鸣曲管理包 : DatePicker range

symfony - 如何在 Symfony 中同时使用 Assert\File 和 Assert\Image?

php - 在 Symfony 3 Controller 中获取请求和 session

symfony - 尽管启用了 csrf,但 "csrf_provider"下仍无法识别选项 "security.firewalls.main.form_login"