2016-01-12 2 views
-1

У меня есть много форм, которые пользователь заполняет на одной странице, но после того, как пользователь делает сообщение, контроллер проверяет, действительна ли форма, и если пользователь уже зарегистрировался, а затем сохраните Информация.Пользователь отправляет форму, но не сохраняет до тех пор, пока не зарегистрируется или не зарегистрируется

Нужна помощь с

Если пользователь не вошел в систему, а затем перенаправить его на страницу регистрации, где он зарегистрироваться и после знака вверх он будет автоматически Логин, то он должен вернуться к одному контроллеру с размещены так что он может быть сохранен.

  • $form->isValid && !$this->getUser() затем перенаправить пользователя для регистрации страницы с этими значениями формы, сохраненными в сеансе?
  • после того, как пользователь зарегистрировался или зарегистрировался, затем вернитесь к предыдущему контроллеру (без каких-либо дальнейших действий) он должен автоматически сохранить ранее представленную форму. так как это было $form->isValid()

Я смущен, должен ли я сохранять значения формы в сеансе и перенаправлять? сохранит ли он правильные значения модели?

Также как перенаправить пользователя на страницу регистрации, а Symfony сообщает о возврате на ту же страницу с почтовым методом после входа в систему.

ответ

1

Я думаю, что вы должны следовать этой структуре:

Корпус: После отправить форму страницы редиректа для регистрации/входа страницы.

1.) Заполните форму и после отправки формы преобразуйте данные сообщения в сериализуемый массив. here.

2.) вставьте этот сериализованный массив в скрытые поля или сеанс (страница регистрации/входа).

3.) заполните регистрационную форму после регистрации, отправьте ее на предыдущую страницу формы и отправьте на эту страницу скрытые данные и несериализуйте их. here

Предложение: Если вы хотите, чтобы ваши почтовые данные не отображаются в странице, то вы можете использовать UrlEncode и функцию urldecode или любой другой метод кодирования, вы можете использовать.

Примечание: Чтобы использовать сеанс или файл cookie для отправки данных с одной страницы на другую страницу, это плохая практика. Он будет находиться на всех страницах, пока вы не удалите/не удалите его.

редирект на страницу входа от контроллера вручную, используйте следующее:

$session->set('_security.user_firewall.target_path', $request->getUri()); 

    throw new AuthenticationException(); // use Symfony\Component\Security\Core\Exception\AuthenticationException; 

редиректа с регистрации страницы, используйте следующее:

  $key = '_security.user_firewall.target_path'; #where "user_firewall" is your firewall name 

     //check if the referrer session key has been set 
     if ($this->container->get('session')->has($key)) 
     { 
      //set the url based on the link they were trying to access before being authenticated 
      $url = $this->container->get('session')->get($key); 

      //remove the session key 
      $this->container->get('session')->remove($key); 
     } 
     // if the referrer key was never set, redirect to a default route 
     else{ 
      $url = $this->generateUrl($routeName); 
     } 

     return new RedirectResponse($url); 
+0

вы должны проверить по электронной почте идентификатор пользователя, либо он зарегистрирован или нет. если не перенаправить их на страницу регистрации, если да переадресовать на страницу входа.а затем отправить данные на эту страницу и отправить эти данные на эту страницу, а затем снова перенаправить на страницу формы, если это необходимо, или просто сохранить эти данные в db и показать сообщение об успешном завершении – Monty

+0

при перенаправлении на страницу входа. В браузере вы увидите страницу входа в систему ОК? Если да, то на той же странице вы должны принять prev. формировать данные в сериализованной форме в скрытых полях. ? Если вы принимаете, если после входа в систему вы должны повторно перенаправить его в предыдущую форму, а также отправить скрытые (сериализованные) данные на эту страницу и не стереть эти данные. я думаю, это ясно. если это не тогда, я должен работать на вашей машине. ;) – Monty

+0

Мне удалось разобраться, спасибо за помощь. Я отредактировал ответ с примерами – Basit

1

Для меня самым простым решением является размещение обеих страниц в виде div на одной странице и использование javascript для скрытия незанятой формы, поэтому вам не нужно сохранять и повторно заполнять значения.