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