Ich habe einen Event-Abonnenten mit der Funktion setAcademicCalendar
. Ich möchte Ausnahmen abfangen, eine Fehlermeldung in der Flash-Hülle anzeigen und das Formular abschicken. Grundsätzlich möchte ich im Formular bleiben (keine Weiterleitungen), dem Benutzer eine Fehlermeldung geben und das Formular nicht speichern.FlashBag ohne Seite aktualisieren oder umleiten
Ich habe zwei Probleme. 1. Ich weiß nicht, den Prozess zu beenden 2. Die Flash-Nachricht wird nur nach einer Seitenaktualisierung angezeigt.
private function setAcademicCalendar(FormEvent $event) {
/** @var CalendarEvent $calendar_event */
$calendar_event = $event->getData();
if ($calendar_event->getCalendar() instanceof Calendar) {
try {
$sem = $this
->container
->get('academic_calendar')
->getSemester($calendar_event->getStart());
$calendar_event->setSemester($sem);
} catch (\Exception $e) {
$this->container->get('session')->getFlashBag()->add('error', $e->getMessage());
}
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents()
{
return [
FormEvents::SUBMIT => 'submitData',
FormEvents::PRE_SET_DATA => 'preSetData',
];
}
/**
* @param FormEvent $event
*/
public function submitData(FormEvent $event)
{
$this->setAcademicCalendar($event);
}