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