2013-03-29 3 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/пользователь расслоении/Controller/SecurityController. PHP

на днище функции loginAction и BEFOR возвращения добавить следующее:

$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 или что-то в этом роде, но вы по-прежнему теряете уровень защиты. Ура !.