FOSUserBundle - 在一个页面上登录和注册表单

时间:2013-03-29 17:06:51

标签: php symfony fosuserbundle

我想制作简单的网站,在主页上,我会看到登录和注册表格。 我已经考虑了好几个小时了,我还是迷路了。以下是我提出的设计:

{# Login form #}
<div>
  {% render url('login_form') %}
</div>
<b>or</b>
{# Register form #}
<div>
  {% render url('register_form') %}
</div>

4 个答案:

答案 0 :(得分:2)

FOS用户包不支持开箱即用的这种结构(在单个模板中登录和注册),所以如果你想保持简单,那么你应该将两个页面分开。

如果强烈要求这种结构,那么你应该从FOS用户包中扩展相应的控制器,并使它们使用相同的模板进行输出渲染。

答案 1 :(得分:0)

我尝试使用symfony 2.8进行登录并在同一页面(root / login)注册,这就是我的工作方式:

在friendsofsymfony / user-bundle / Controller / SecurityController.php中进行首次简单编辑

在函数loginAction的底部,并返回添加:

$formFactory = $this->get('fos_user.registration.form.factory');
$form = $formFactory->createForm();

然后将注册表单视图添加到返回中,如下所示:

return $this->renderLogin(array(
            'last_username' => $lastUsername,
            'error' => $error,
            'csrf_token' => $csrfToken,
            'register_form' => $form->createView()
        ));

然后在你的login.html.twig中放置你想要的地方:

{{ form_rest(register_form) }}
  • 重要提示:这适用于登录,但如果注册验证错误,则会重定向到/注册!

答案 2 :(得分:0)

我实现该功能的唯一方法是停用csrf保护,这仅用于开发目的,我强烈建议您不要在生产环境中这样做,此任务背后的问题是一个常见的错误,称为{{1这意味着您发送的代码与该表单不对应。您可以随时更改登录/注册表单并使用AJAX构建它,但是再次忘记CSRF,而应该使用HTTPS或类似的东西进行保护,但您仍然会丢失保护层。干杯!

答案 3 :(得分:0)

在这里,无需自定义控制器和操作

覆盖默认的FOSUserbundle视图register.html.twiglogin.html.twig

覆盖login.html.twig

{% include "@FOSUser/Registration/register_content.html.twig" %}

覆盖register.html.twig

{% include "@FOSUser/Registration/register_content.html.twig" %}

将两个文件上方放置在以下位置

Symfony 4

templates/bundles/FOSUserBundle/Security/login.html.twig

templates/bundles/FOSUserBundle/Security/login.html.twig

Symfony 3

app/Resources/FOSUserBundle/Security/login.html.twig

app/Resources/FOSUserBundle/Security/login.html.twig

最后,您可以在同一页面,多个页面以及所有您想要的所有页面上呈现登录和注册视图:P

my_login_and_registration_page.html.twig

<div class="row">
  <div class="col-md-6">
    {{ render(controller('fos_user.security.controller:loginAction')) }}
  </div>
  <div class="col-md-6">
    {{ render(controller('fos_user.registration.controller:registerAction')) }}
  </div>
</div>

注意:由于覆盖的视图不再扩展FOSUserbundle的基本布局。您需要管理布局中错误/消息的显示。

检查此文件以供参考: vendor/friendsofsymfony/user-bundle/Resources/views/layout.html.twig

相关问题