Silex双重形式

时间:2013-11-01 10:05:29

标签: forms silex

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

1 个答案:

答案 0 :(得分:0)

只要它们是同一表单的唯一实例,并以不同的方式引用它就应该没问题。

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

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

然后在你的模板中:

{% if currentRoute != 'auth.login') %}
  // output your form here
{% endif %}