我想製作一個簡單的網站,在主頁上我會看到登錄和註冊表單。 我一直在想這個好幾個小時,但我仍然迷失。這是我提出的設計是: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或類似的方法進行保護,但仍然失去保護層。乾杯!。