Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // src\Nino\CommentsBundle\Comments\NinoComments.php
- namespace Nino\CommentsBundle\Comments;
- use Doctrine\Bundle\DoctrineBundle\Registry;
- use Symfony\Component\DependencyInjection\ContainerInterface as Container;
- use Nino\CommentsBundle\Entity\Commentaires;
- use Nino\CommentsBundle\Entity\Commentaire;
- class NinoComments
- {
- /**
- * @var Doctrine\Bundle\DoctrineBundle\Registry
- */
- protected $doctrine;
- protected $container;
- public $coms;
- public $com;
- public function __construct(Registry $doctrine,Container $container)
- {
- // chargement de doctrine et du container
- $this->doctrine = $doctrine;
- $this->container = $container;
- }
- public function chargerCommentaires($section,$parent){
- // récupération du manager
- $em = $this->doctrine->getManager();
- // récupération du repository de "commentaires"
- $repository = $em->getRepository('NinoCommentsBundle:Commentaires');
- // récupération de l'objet com pour la section et ça page
- $this->com = $repository->findOneBy(array('section' => $section,'parentId' => $parent));
- // vérification que l'objet existe
- if (!$this->com) {
- // s'il n'existe pas alors on le créer.
- $this->com = new Commentaires();
- $this->com->setSection($section);
- $this->com->setParentId($parent);
- // persist puis flush pour sauvegarder
- $em->persist($this->com);
- $em->flush();
- // liste de commentaires vide vue qu'il est nouveau
- $this->coms = array();
- }else{
- // sinon on charge le repository "commentaire"
- $repository = $em->getRepository('NinoCommentsBundle:Commentaire');
- // et on récupére les 5 derniers commentaires associés a l'objet "commentaires"
- $this->coms = $repository->findBy(array('commentaires'=>$this->com),array('date' => 'desc'),5,0);
- }
- }
- // function trouvé sur internet afin de pouvoir utiliser le form builder depuis un service
- public function createFormBuilder($data = null)
- {
- return $this->container->get('form.factory')->createBuilder('form', $data);
- }
- public function getFormulaire(){
- // Je récupére l'objet commentaire afin de créer le formulaire a partir de son entité
- $commentaire = new Commentaire();
- $form = $this->createFormBuilder($commentaire);
- $form
- ->add('pseudo','text')
- ->add('content','textarea');
- // Je récupére la requete
- $request = $this->container->get('request');
- if ($request->getMethod() == 'POST') {
- // récupération des données du formulaire
- $formData=$request->request->get('form');
- // je met ces données dans mon objet
- $commentaire->setPseudo($formData['pseudo']);
- $commentaire->setContent($formData['content']);
- // je met comme objet parent le "commentaires" actuel
- $commentaire->setCommentaires($this->com);
- // je charge le manager d'entité puis sauvegarde ce commentaire
- $em = $this->doctrine->getManager();
- $em->persist($commentaire);
- $em->flush();
- // j'ajoute un flash bag pour afficher que le commentaire est ajouté
- $this->container->get('session')->getFlashBag()->add('info', 'Commentaire bien ajouté');
- }
- // je récupére le formulaire puis le retourne au bundle afin de l'afficher dans la vue
- $form = $form->getForm();
- $form = $form->createView();
- return $form;
- }
- // retourne la liste des commentaires
- public function getCommentaires(){
- return $this->coms;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment