Php 如何将样式应用于FOSUserBundle中的注册表
我用的是Symfony2和FOSUserBundle 这个问题可以扩展到FOSUserBundle中的任何其他捆绑形式 因为它就在捆绑包中,所以使用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
<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 %}