Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将样式应用于FOSUserBundle中的注册表_Php_Symfony_Fosuserbundle - Fatal编程技术网

Php 如何将样式应用于FOSUserBundle中的注册表

Php 如何将样式应用于FOSUserBundle中的注册表,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,我用的是Symfony2和FOSUserBundle 这个问题可以扩展到FOSUserBundle中的任何其他捆绑形式 因为它就在捆绑包中,所以使用FOSUserBundle的登录表单非常容易。在这种情况下,您看到完整的表单,您只需“复制”或在其他任何地方使用它,并应用您希望的样式。这就是它的样子: <form action="{{ path("fos_user_security_check") }}" method="post"> <input type="hidden" n

我用的是Symfony2和FOSUserBundle

这个问题可以扩展到FOSUserBundle中的任何其他捆绑形式

因为它就在捆绑包中,所以使用FOSUserBundle的登录表单非常容易。在这种情况下,您看到完整的表单,您只需“复制”或在其他任何地方使用它,并应用您希望的样式。这就是它的样子:

<form action="{{ path("fos_user_security_check") }}" method="post">
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
<label for="username">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">{{ 'security.login.password'|trans({}, 'FOSUserBundle') }}</label>
<input type="password" id="password" name="_password" />
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label for="remember_me">{{ 'security.login.remember_me'|trans({}, 'FOSUserBundle') }}</label>
<input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}" />

{{'security.login.username'| trans({},'FOSUserBundle')}
{{'security.login.password'{}trans({},'FOSUserBundle')}
{{'security.login.memory{me'{trans({},'FOSUserBundle')}

但是,例如,登记表如何?在这种情况下,这就是我们在捆绑包中得到的全部:

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">

{{form_widget(form)}


[请注意,stackoverflow没有正确解析最后一段代码,也没有正确预处理它]

如您所见,所有表单都来自标记{{form_widget(form)}},这就是我们呈现表单的全部内容


问题:如何以及在何处更改该表单以适合我的样式、宽度、颜色等?

注册表单是使用Symfony2表单组件构建的,因此所有自定义都应该使用它来完成

关于这个话题,这里有一个非常好的例子

一个非常简单的例子:

<div class="pull-left input">
    {{ form_label(form.username) }}
    {{ form_widget(form.username) }}
</div> 

{{ form_rest(form) }}

{{form_标签(form.username)}
{{form_小部件(form.username)}
{{form_rest(form)}

您应该覆盖捆绑模板(本例中为FOSUser),并在新模板中进行所有自定义,包括按照@Inorry的建议处理表单组件呈现选项。有关说明,请参见FOS文档

一般来说,以下几点就足够了:

  • 通过在
    app/Resources/FOSUserBundle/views/
    下创建自己的包,覆盖包中的
    layout.html.twig
  • 通过
    app/Resources/FOSUserBundle/views/foo.html.twig
    覆盖要使用相同模式自定义的任何其他模板:
    foo.html.twig
  • 例如,如果要使用引导自定义登录表单,则创建
    app/Resources/FOSUserBundle/views/Security/login.html.twig

    {% extends "FOSUserBundle::layout.html.twig" %}
    
    {% trans_default_domain 'FOSUserBundle' %}
    
    {% block title %}Login{% endblock %}
    
    {% block fos_user_content %}
    {% if error %}
        <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
    {% endif %}
    
    <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">{{ 'security.login.username'|trans }}</label>
            <input class="form-control" type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
        </div>
        <div class="form-group">
            <label for="password">{{ 'security.login.password'|trans }}</label>
            <input class="form-control" type="password" id="password" name="_password" required="required" />
        </div>
        <div class="form-group">
            <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
            <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
        </div>
    
        <div class="form-group">
            <input class="btn btn-default" type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
        </div>
    </form>
    {% endblock fos_user_content %}
    
    {%extends“FOSUserBundle::layout.html.twig”%}
    {%trans\u默认\u域'FOSUserBundle%}
    {%block title%}登录名{%endblock%}
    {%block fos_user_content%}
    {%if错误%}
    {{error.messageKey | trans(error.messageData,'security')}
    {%endif%}
    {{'security.login.username'|trans}}
    {{'security.login.password'|trans}}
    {{'security.login.memory|me'|trans}
    {%endblock fos_user_content%}
    
  • 请注意将视图的结构保留在捆绑包下。这就是在
    Security
    文件夹下创建登录模板的原因。请记住:必须为每个自定义模板保留捆绑包中的结构

  • 还要注意使用
    {%extends“FOSUserBundle::layout.html.twig”%}
    ,因为原始模板被自定义模板屏蔽(如果基本假设失败,我会在较新版本的Symfony中检查)
  • {% extends "FOSUserBundle::layout.html.twig" %}
    
    {% trans_default_domain 'FOSUserBundle' %}
    
    {% block title %}Login{% endblock %}
    
    {% block fos_user_content %}
    {% if error %}
        <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
    {% endif %}
    
    <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">{{ 'security.login.username'|trans }}</label>
            <input class="form-control" type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
        </div>
        <div class="form-group">
            <label for="password">{{ 'security.login.password'|trans }}</label>
            <input class="form-control" type="password" id="password" name="_password" required="required" />
        </div>
        <div class="form-group">
            <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
            <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
        </div>
    
        <div class="form-group">
            <input class="btn btn-default" type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
        </div>
    </form>
    {% endblock fos_user_content %}