Symfony 2 прекратить сохранение формы процесса

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

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

Если службы возвращают сообщение о том, что данные реплицированы, все работает нормально.

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

Цель состоит в том, чтобы предотвратить сохранение данных в Symfony, даже если они действительны, если внешняя служба скажет noи я не знаю, как выполнить такую ​​аварийную остановку.

На самом деле, он основан только на FOSUserBundle, но если я найду работающее решение, мне придется выполнить нечто подобное для других сущностей, поэтому я стараюсь быть как можно более универсальным.

Вот некоторые из моего кода

class MyListener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'createUser',
FOSUserEvents::CHANGE_PASSWORD_SUCCESS => 'editUser'
);
}
public function createUser(FormEvent $event)
{
$user = $event->getForm()->getData();

// Check if the user exists before trying to edit
$result = $this->_userExists($user);
if($result['value'] == false)
{

// Create the user
$result = $this->_createUser($user);

// Check if the user is successfully replicated
if($result['result'] != 'success')
{
/*
* Emergency stop (user not replicated)
*/
}
}else{
/*
* Emergency stop (user doesn't exists)
*/
}
}

. . .
}

На самом деле я не нашел способа остановить сохранение рабочего процесса и вернуться на страницу формы, чтобы отобразить сообщение об ошибке. Так что, если у кого-то есть идея, как это сделать, не стесняйтесь, напишите свою идею и спасибо всем вам, ребята. Stackoverflow действительно лучший 😉

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

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