1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
//une instance de cette classe est enregistré dans le container
// de plus elle est taggé pour être un listener sur l'evenement on Exception
class EntrepriseProvider{
protected $session;
protected $isCompleted;
protected $router;
public function _construct($session,$router){
$this->session=$session;
$this->router=$router;
$this->isCompleted=true;
}
public function getEntreprise(){
$e=$this->session->get('entreprise');
if(!$e){
$this->isCompleted=false;
throw new \Exception("les variables en session ne sont pas remplies");
}
return $e;
}
public function onException(Event $e){
if($this->isCompleted){
return;
}
//on considère que l'Exception a été lancée lorsque l'on a tenté d'accéder à une valeur non rempli
// donc on redirige vers le formulaire permettant de remplir ces valeurs
$url=$this->router->generate('alimente_entreprise');
$response= new RedirectResponse($url);
$event->setResponse($response);
}
} |