0
이벤트 수신자의 기능이 setAcademicCalendar
입니다. 예외를 잡아서 플래시 가방에 오류 메시지를 표시하고 양식 제출을 종료하고 싶습니다. 기본적으로 양식 (리디렉션 없음)에 머물면서 오류 메시지를주고 양식을 저장하지 않겠습니다.페이지 새로 고침이나 리디렉션이없는 FlashBag
두 가지 문제점이 있습니다. 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);
}