2013-03-29 60 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或類似的方法進行保護,但仍然失去保護層。乾杯!。