François преди 6 години
родител
ревизия
8cacb7c86d

+ 34 - 0
src/AppBundle/Controller/VideothequeController.php

@@ -2,6 +2,7 @@
 
 namespace AppBundle\Controller;
 
+use AppBundle\Entity\Commentaire;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Symfony\Component\Routing\Annotation\Route;
@@ -105,4 +106,37 @@ class VideothequeController extends Controller
 		));
 	}
 
+	/**
+     * @Route("/fichefilm/{id}", name="videotheque_voirfilm")
+     */
+	public function voirFilmAction(Request $request, \AppBundle\Entity\Film $film)
+    {
+        $em = $this->getDoctrine()->getManager();
+        $repoComment = $em->getRepository('AppBundle:Commentaire');
+        $commentaireUser = $repoComment->findOneBy(array('film'=>$film, 'user'=>$this->getUser()));
+        if (is_null($commentaireUser))
+        {
+            $commentaireUser = new Commentaire();
+            $commentaireUser->setUser($this->getUser());
+            $commentaireUser->setFilm(($film));
+        }
+        $form = $this->createForm('AppBundle\Form\CommentaireType', $commentaireUser);
+        $form->handleRequest($request);
+        if ($form->isSubmitted() && $form->isValid())
+        {
+            $commentaireUser = $form->getData();
+            $em->persist($commentaireUser);
+            $em->flush();
+            $this->addFlash('success', 'Le commentaire a été posté');
+
+        }
+        $commentaires = $repoComment->findBy(array('film'=>$film));
+
+        return $this->render('@App/videotheque/voirfilm.html.twig', array(
+            'film' => $film,
+            'commentaires'  => $commentaires,
+            'form'  =>  $form->createView()
+        ));
+    }
+
 }

+ 2 - 2
src/AppBundle/Entity/Commentaire.php

@@ -81,7 +81,7 @@ class Commentaire
      *
      * @return Commentaire
      */
-    public function setFilm(\AppBundle\Entity\Film $film = null)
+    public function setFilm(\AppBundle\Entity\Film $film)
     {
         $this->film = $film;
 
@@ -105,7 +105,7 @@ class Commentaire
      *
      * @return Commentaire
      */
-    public function setUser(\AppBundle\Entity\User $user = null)
+    public function setUser(\AppBundle\Entity\User $user)
     {
         $this->user = $user;
 

+ 60 - 0
src/AppBundle/Form/CommentaireType.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace AppBundle\Form;
+
+use AppBundle\Entity\Realisateur;
+use AppBundle\Repository\RealisateurRepository;
+use Symfony\Bridge\Doctrine\Form\Type\EntityType;
+use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
+use Symfony\Component\Form\Extension\Core\Type\CollectionType;
+use Symfony\Component\Form\Extension\Core\Type\RangeType;
+use Symfony\Component\Form\Extension\Core\Type\TextType;
+use Symfony\Component\Form\AbstractType;
+use Symfony\Component\Form\Extension\Core\Type\DateType;
+use Symfony\Component\Form\Extension\Core\Type\TextareaType;
+use Symfony\Component\Form\FormBuilderInterface;
+use Symfony\Component\OptionsResolver\OptionsResolver;
+use Symfony\Component\Form\Extension\Core\Type\IntegerType;
+use Symfony\Component\Form\Extension\Core\Type\SubmitType;
+
+
+class CommentaireType extends AbstractType
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function buildForm(FormBuilderInterface $builder, array $options)
+    {
+	    $builder
+            ->add('contenu', TextareaType::class)
+
+            /*->add('note', RangeType::class, array (
+                'required'  => false,
+                'attr'      => array (
+                    'min'   => 0,
+                    'max'   => 5
+                )
+            ))*/
+		    ->add('save', SubmitType::class, array('label' => 'Enregistrer'));
+    }
+    
+    /**
+     * {@inheritdoc}
+     */
+    public function configureOptions(OptionsResolver $resolver)
+    {
+        $resolver->setDefaults(array(
+            'data_class' => 'AppBundle\Entity\Commentaire'
+        ));
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getBlockPrefix()
+    {
+        return 'appbundle_commentaire';
+    }
+
+
+}

+ 1 - 0
src/AppBundle/Resources/views/videotheque/form_commentaire.html.twig

@@ -0,0 +1 @@
+{{ form(form) }}

+ 1 - 1
src/AppBundle/Resources/views/videotheque/liste.html.twig

@@ -28,7 +28,7 @@
                 {%  endif %}
 			</td>
 			<td>{%  if film.authered is defined %}{{ film.authered.username }}{% endif %}</td>
-			<td>{{ film.titre }}</td>
+			<td><a href="{{ path('videotheque_voirfilm', {'id': film.id}) }}">{{ film.titre }}</a></td>
 			<td>
 			{% if film.realisateurs is defined %}
 				<ul>

+ 36 - 0
src/AppBundle/Resources/views/videotheque/voirfilm.html.twig

@@ -0,0 +1,36 @@
+{% extends "@App/videotheque/base.html.twig" %}
+
+{% block title %}Fiche film{% endblock %}
+{% block titre %}{{ film.titre }}{% endblock %}
+
+{%  block body %}
+    <div class="row">
+        <div class="col">
+            <p>Réalisateur(s)</p>
+            <ul>
+            {% for realisateur in film.realisateurs %}
+                <li>{{ realisateur.nomComplet }}</li>
+            {% endfor %}
+            </ul>
+        </div>
+        <div class="col">
+            <p>Ce film est suivi par</p>
+            <ul>
+                {% for user in film.usersWantToView %}
+                    <li>{{ user.username }}</li>
+                {% endfor %}
+            </ul>
+        </div>
+    </div>
+    <div class="">
+        <h2>Commentaires</h2>
+        <h3>Votre commentaire</h3>
+        {{ include('@App/videotheque/form_commentaire.html.twig') }}
+        <h3>Tous les commentaires</h3>
+        {% for commentaire in commentaires %}
+            <h4>Posté par {{ commentaire.user.username }}</h4>
+            <p>{{ commentaire.contenu }}</p>
+            <hr />
+        {% endfor %}
+    </div>
+{% endblock %}