2017-09-08 37 views
0

我有一個事件訂閱者,功能setAcademicCalendar。我想要捕捉異常,在Flash包中顯示錯誤消息並終止表單提交。基本上,我想留在窗體(無重定向),給用戶一個錯誤信息,不保存表單。沒有頁面刷新或重定向的FlashBag

我有兩個問題。 1.我不知道要終止進程2.只有刷新頁面後纔會顯示Flash消息。

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驗證。只有一些嚴格的前端技術 - 像角js,vue.js與一些API調用