Symfony 4: Как управлять формой входа с другими формами на той же странице? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть страница статьи с условием ветки.

Если вы хотите оставить комментарий к моей статье, вам необходимо войти в систему!

Форма входа работает, но не перенаправляет.

Я много чего пробовал ...

Профилировщик думает, что это валидация формы комментария, но это валидация формы логина.

У тебя много идей?

С SF4 контроллер для входа в систему настолько плох, что мне не удается управлять им!

thx из Франции.

1 Ответ

0 голосов
/ 25 февраля 2020

Хорошо, я предполагаю, что ваша ситуация может быть такой: когда вы проверяете пользователя и он говорит «анонимно», у вас есть кнопка «Войти, чтобы комментировать», которая открывает модальное окно с формой входа, поэтому давайте сначала разберем его, вы должны указать действие формы входа в систему

<form action="{{ url('your_login_handler_url') }}" method="POST(I guess)">
{# here goes your form body #}
</form>

Далее вам следует перезаписать свой аутентификатор, используемый вашей формой / login (имя и код функции взяты из Symfony do c)

class LoginFormAuthenticator extends AbstractFormLoginAuthenticator

Здесь вы должны вставить if if

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        // This one
        if($request->attributes->get('_route') === 'your article page') {
            return new RedirectResponse('your_article_page');
        }

        if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
            return new RedirectResponse($targetPath);
        }

        // For example : return new RedirectResponse($this->router->generate('some_route'));
        throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);
    }

Вы также можете переопределить onAuthenticationFailure , чтобы перенаправить обратно на страницу статьи, а не по умолчанию это страница входа (хотя это может и не быть необходимым, я не уверен на 100%, что вы захотите это проверить)

Таким образом, ваша форма комментария к статье не будет даже ничего знать о том, что другая форма отправлено, что не приведет к ошибке проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...