我目前正在使用Silex2 FormFactory来构建表单,我偶然发现了一个问题。
我有一个登录页面(login.twig),要求提供电子邮件和密码。此表单包含验证。但是我希望这个登录表单也总是在我的标题中(在我的layout.twig上)。我创建了表单并将操作链接到登录页面的位置。我必须手动编写每个输入元素的正确id和名称,然后将生成的login.twig标记复制到表单中。但我怀疑这是正确的做法吗?
<form class="navbar-form pull-right" action="{{ path('auth.login') }}" method="post" novalidate="novalidate">{# disables HTML5 formchecking #}
<input class="span2" type="text" id="loginform_email" name="loginform[email]" placeholder="Email">
<input class="span2" type="password" id="loginform_password" name="loginform[password]" placeholder="Password">
<input id="loginform__token" type="hidden" value="9eb2a291d32d114987aee1548da878201dd79a7b" name="loginform[_token]">
<button class="btn" type="submit">Sign in</button>
<a href="{{ path('auth.register') }}">register here</a>
</form>
答案 0 :(得分:0)
只要它们是同一表单的唯一实例,并以不同的方式引用它就应该没问题。
但我建议出于可用性的原因,只需在登录页面上隐藏登录表单。您可以确定路线的名称并将其设置为全局变量:
$app->before(function (Request $request) {
$app['twig']->addGlobal('currentRoute', $request->get('_route'));
});
然后在你的模板中:
{% if currentRoute != 'auth.login') %}
// output your form here
{% endif %}