0

我目前正在使用 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>
4

1 回答 1

0

只要它们是相同形式的唯一实例,并且引用不同,它应该没问题。

但出于可用性原因,我建议简单地从登录页面的标题中隐藏登录表单。您可以确定路线的名称并将其设置为全局变量:

$app->before(function (Request $request) {
    $app['twig']->addGlobal('currentRoute', $request->get('_route'));
});

然后在您的模板中:

{% if currentRoute != 'auth.login') %}
  // output your form here
{% endif %}
于 2013-11-08T10:15:32.380 回答