Sonata Admin Bundle + Sonata用户捆绑包:覆盖登录表单

时间:2016-01-14 15:47:14

标签: 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 %}

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

任何人都已覆盖此登录表单模板吗?

2 个答案:

答案 0 :(得分:8)

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

app/Resources/SonataUserBundle/views/Admin/Security

它会起作用。

您可以在Symfony中阅读有关覆盖模板的more

答案 1 :(得分:1)

1 /好!我知道你做了几次搜索,但是你试过这个:

factory.setWsdlLocation("http://localhost:8123/SoapContext/SoapPort1");

根据你的评论,我没有看到这个解决方案。

更新

Resources/ ├── ApplicationSonataUserBundle │ └── views │ | │ └── Security │ └── login.html.twig 是一个扩展。我习惯用SonataMediaBundle做到这一点。

例如,在ApplicationSonataMediaBundle.php中:

ApplicationSonataUserBundle
相关问题