2017-09-08 2 views
0

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); 
} 

Antwort

0

Wenn Sie dies ohne Umleitung/Refresh tun wollen vergessen Sie die Validierung in strengen PHP. Nur einige strenge Frontend-Techs - wie angular js, vue.js mit einigen API-Calls

Verwandte Themen