Пользователь отправляет форму, но не сохраняет, пока не зарегистрируется или не войдет в систему

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

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

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

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

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

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

-1

Решение

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

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

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

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

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

Предложение : Если вы хотите, чтобы ваши данные не отображались на странице, вы можете использовать функцию 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);
1

Другие решения

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

1

По вопросам рекламы [email protected]