2017-09-08 1 views
0

私はイベントサブスクライバがsetAcademicCalendarです。私は例外をキャッチし、フラッシュバッグにエラーメッセージを表示し、フォームの送信を終了したい。基本的には、フォームに(リダイレクトなし)滞在し、エラーメッセージを表示してフォームを保存しません。ページをリフレッシュまたはリダイレクトしないFlashBag

私には2つの問題があります。 1.プロセスの終了を知らない2.フラッシュメッセージは、ページの更新後にのみ表示されます。

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

答えて

0

リダイレクト/リフレッシュなしでこれを行うには、厳密なPHPで検証を忘れてください。いくつかの厳しいフロントエンドの技術者 - 角度ジェス、vue.js、いくつかのAPIコールあり

関連する問題