public function addAction(Request $request) { if (!$this->get('security.context')->isGranted('ROLE_INVITE')) { throw new AccessDeniedException('Accès limité aux personnes autorisées à écrire un article.'); } $article = new article(); $user = $this->getUser(); $article->setAuteur($user->getUsername()); $form = $this->createForm(new articleType(), $article); if ($form->handleRequest($request)->isValid()) { // enregistrer l'article $em = $this->getDoctrine()->getManager(); $em->persist($article); $em->flush(); $request->getSession()->getFlashBag()->add('notice', 'Article bien enregistré.'); //recherche des commentaires associés $qb = $em->getRepository('VFBlogBundle:Commentaire')->createQueryBuilder('c'); $results = $qb->select('c.id')->where('c.article = :idarticle')->setParameter('idarticle', $article->getId())->orderBy('c.date', 'DESC')->getQuery()->getResult(); $comm = array(); for ($i = 0; $i < count($results); $i += 1) { $c = $em->getRepository('VFBlogBundle:Commentaire')->find($results[$i]); $comm[] = $c; } //envoi de mail $user = $this->getUser(); $message = \Swift_Message::newInstance()->setSubject($user->getUsername() . ' a écrit un nouvel article.')->setFrom('*****@*****.**')->setTo('*****@*****.**')->setCc('*****@*****.**')->setBody($this->renderView('VFBlogBundle:Article:email.txt.twig', array('article' => $article, 'comm' => $comm))); $users = $em->getRepository('VFUserBundle:User')->findAll(); for ($i = 0; $i < count($users); $i += 1) { //$message->addCc($users[$i]->getEmailCanonical()); $message->addCc('*****@*****.**'); } $this->get('mailer')->send($message); $request->getSession()->getFlashBag()->add('notice', 'Le message de création de l\'article a bien été envoyé par courriel'); return $this->render('VFBlogBundle:Article:voir.html.twig', array('article' => $article, 'comm' => $comm, 'user' => $user)); } // À ce stade : // - Soit la requête est de type GET, donc le visiteur vient d'arriver sur la page et veut voir le formulaire // - Soit la requête est de type POST, mais le formulaire n'est pas valide, donc on l'affiche de nouveau return $this->render('VFBlogBundle:Article:formArticle.html.twig', array('form' => $form->createView(), 'article' => $article, 'user' => $user)); }
/** * {@inheritDoc} */ public function getEtat() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEtat', []); return parent::getEtat(); }