Do przechwycenia wyjątku potrzeba było dać catch (\Exception $e) powstał jednak inny problem. Nie mogę przekazać informacji poprzez flashBag mój kod wygląda tak:
if ($form->isValid()) {
// perform some action, such as saving the task to the database
$klasaAdresowa = $form->getData();
try {
$em->persist($klasaAdresowa);
$em->flush();
}
catch (\Exception $e) {
// jaka wiadomosc
$this->get('session')->getFlashBag()->add(
'error',
'Wystąpił błąd rekord nie został zapisany!'
);
// jaka ikona do wiadomosci
$this->get('session')->getFlashBag()->add(
'error',
'error'
);
return $this->forward('MyBundleCMSBundle:KlasyAdresowe:index');
}
// jaka wiadomosc
$this->get('session')->getFlashBag()->add(
'notice',
'Dane klasy adresowej zostały poprawnie zapisane!'
);
// jaka ikona do wiadomosci
$this->get('session')->getFlashBag()->add(
'info',
'info'
);
return $this->redirect($this->generateUrl('my_bundle_klasyadresowe_index'));
}
Kod bazowego szablonu widoku, gdzie wyświetlają się komunikaty zwrotne:
{% block flash %}
<div id="flash-messanger" class="{% for classMessage in app.session.flashbag.get('info') %}{{classMessage}}{% endfor %}"> {% for flashMessage in app.session.flashbag.get('notice') %}
{{ flashMessage }}
{% endfor %}
{% endblock %}
Przypuszczalnie to kwestia dwóch przekierowań i w efekcie zresetowania flashBag jakie następują po przechwyceniu wyjątku, pytanie jak to obejść ? Zamiast forward próbowałem też redirect