2017-09-08 6 views
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); 
} 

답변

0

리디렉션/새로 고침없이 이것을 수행하려면 엄격한 PHP에서 유효성 검사를 잊어 버리십시오. 일부 엄격한 프론트 엔드 기술 - 각도 API, vue.js와 같은 일부 API 호출