我想制作一个简单的网站,在主页上我会看到登录和注册表单。 我一直在想这个好几个小时,但我仍然迷失。这是我提出的设计是:FOSUserBundle - 在一个页面上登录并注册表格
{# Login form #}
<div>
{% render url('login_form') %}
</div>
<b>or</b>
{# Register form #}
<div>
{% render url('register_form') %}
</div>
我想制作一个简单的网站,在主页上我会看到登录和注册表单。 我一直在想这个好几个小时,但我仍然迷失。这是我提出的设计是:FOSUserBundle - 在一个页面上登录并注册表格
{# Login form #}
<div>
{% render url('login_form') %}
</div>
<b>or</b>
{# Register form #}
<div>
{% render url('register_form') %}
</div>
FOS用户包不支持这样的结构(登录和注册单模板)开箱,所以也许如果你想要让事情变得简单,那么你应该分开两页。
如果强烈要求此结构,那么您应该从FOS用户包扩展相应的控制器,并使它们使用相同的模板进行输出渲染。
我试着用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) }}
我确实实现该功能的唯一方法是取消激活csrf保护,这仅用于开发目的,我强烈建议您不要在生产环境中这样做,此任务背后的问题是一种常见错误,称为CSRF Token Mismatch
,这意味着你正在发送一个不符合该表单的令牌。您可以随时更改登录/注册表单并使用AJAX进行构建,但是再次忘记CSRF,而应该使用HTTPS或类似的方法进行保护,但仍然失去保护层。干杯!。