2013-03-29 62 views
1

我想制作一个简单的网站,在主页上我会看到登录和注册表单。 我一直在想这个好几个小时,但我仍然迷失。这是我提出的设计是:FOSUserBundle - 在一个页面上登录并注册表格

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

回答

2

FOS用户包不支持这样的结构(登录和注册单模板)开箱,所以也许如果你想要让事情变得简单,那么你应该分开两页。

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

0

我试着用symfony的2.8进行登录,并在同一个页面注册(在根/登录),这是它如何工作对我来说:

首先简单编辑在friendsofsymfony /用户束/控制器/ SecurityController。 PHP

在功能则loginAction的和befor回报BUTTOM补充一点:

$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) }} 
  • 要点:这是将工作正常登录,但在注册校验错误的情况下,它会重定向到/注册!
0

我确实实现该功能的唯一方法是取消激活csrf保护,这仅用于开发目的,我强烈建议您不要在生产环境中这样做,此任务背后的问题是一种常见错误,称为CSRF Token Mismatch,这意味着你正在发送一个不符合该表单的令牌。您可以随时更改登录/注册表单并使用AJAX进行构建,但是再次忘记CSRF,而应该使用HTTPS或类似的方法进行保护,但仍然失去保护层。干杯!。