Browse Source

Mise à jour façon de rendre les options

François Drouhard 3 years ago
parent
commit
29c571ee26

+ 3 - 7
src/Controller/SearchController.php

@@ -2,6 +2,7 @@
 
 namespace App\Controller;
 
+use App\Service\OptionsManager;
 use App\Service\Search;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Request;
@@ -12,15 +13,10 @@ class SearchController extends AbstractController
     /**
      * @Route("/recherche", name="search_recherche")
      */
-    public function searchAction(Request $request, Search $filmSearch)
+    public function searchAction(Request $request, Search $filmSearch, OptionsManager $options)
     {
-        if ($this->getUser()->getProfile()->getView() === 0) {
-            $type = "tableaux";
-        } else {
-            $type = "vignettes";
-        }
         $query = $request->query->get('q', "");
-        return $this->render('videotheque/liste_'.$type.'.html.twig', array(
+        return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
             'listeFilms'    =>  $filmSearch->search($query),
             'titre'         =>  'Recherche '. $query,
             'query'         =>  $query

+ 7 - 12
src/Controller/VideothequeController.php

@@ -19,23 +19,18 @@ use App\Repository\GenreRepository;
 use App\Repository\RealisateurRepository;
 use App\Service\CommentaireManager;
 use App\Service\FilmManager;
+use App\Service\OptionsManager;
 
 class VideothequeController extends AbstractController
 {
 	/**
 	 * @Route("/", name="videotheque_liste")
 	 */
-	public function listeAction(Request $request, FilmRepository $repo)
+	public function listeAction(Request $request, FilmRepository $repo, OptionsManager $options)
 	{
         $listeFilms = $repo->findTous();
-        $type = "vignettes";
-        if ($this->isGranted('IS_AUTHENTICATED_FULLY')) {
-            if ($this->getUser()->getProfile()->getView() === 0) {
-                $type = "tableaux";
-            }
-        }
 
-		return $this->render("videotheque/liste_$type.html.twig", array(
+		return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
             'listeFilms'	=>	$listeFilms,
             'titre'         =>  'Liste complète',
 		));
@@ -44,7 +39,7 @@ class VideothequeController extends AbstractController
     /**
      * @Route("/liste-by/{id}", name="videotheque_listepargenre")
      */
-	public function  listeParGenreAction(\App\Entity\Genre $genre, FilmRepository $repo)
+	public function  listeParGenreAction(\App\Entity\Genre $genre, FilmRepository $repo, OptionsManager $options)
     {
         $films = $repo->findFilmWithGenre(array($genre->getName()));
         if ($this->getUser()->getProfile()->getView() === 0) {
@@ -53,7 +48,7 @@ class VideothequeController extends AbstractController
             $type = "vignettes";
         }
 
-        return $this->render("videotheque/liste_$type.html.twig", array(
+        return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
             'listeFilms'    => $films,
             'titre'         => 'Films par catégorie : '.$genre->getName()
         ));
@@ -62,7 +57,7 @@ class VideothequeController extends AbstractController
     /**
      * @Route("/liste-by_real/{id}", name="videotheque_listeparreal")
      */
-    public function  listeParRealisateurAction(Realisateur $realisateur, FilmRepository $repo)
+    public function  listeParRealisateurAction(Realisateur $realisateur, FilmRepository $repo, OptionsManager $options)
     {
         $films = $repo->findFilmWithReal(array($realisateur->getNomComplet()));
 
@@ -72,7 +67,7 @@ class VideothequeController extends AbstractController
             $type = "vignettes";
         }
 
-        return $this->render("videotheque/liste_$type.html.twig", array(
+        return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
             'listeFilms'    => $films,
             'titre'         => 'Films par réalisateur : '.$realisateur->getNomComplet()
         ));

+ 3 - 8
src/Controller/VideothequePersonnelleController.php

@@ -3,6 +3,7 @@
 namespace App\Controller;
 
 use App\Repository\FilmRepository;
+use App\Service\OptionsManager;
 use Doctrine\ORM\EntityManagerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\JsonResponse;
@@ -14,17 +15,11 @@ class VideothequePersonnelleController extends AbstractController
 	/**
      * @Route("/maliste/", name="videothequepersonnelle_maliste")
      */
-	public function maListeAction (Request $request, FilmRepository $repo)
+	public function maListeAction (Request $request, FilmRepository $repo, OptionsManager $options)
     {
         $films = $repo->findTousFavoritesByUser($this->getUser());
 
-        if ($this->getUser()->getProfile()->getView() === 0) {
-            $type = "tableaux";
-        } else {
-            $type = "vignettes";
-        }
-
-        return $this->render('videotheque/liste_'.$type.'.html.twig', array(
+        return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
             'listeFilms'    =>  $films,
             'titre'         =>  'Ma liste de films à voir'
         ));

+ 6 - 1
src/Form/ProfileType.php

@@ -25,7 +25,12 @@ class ProfileType extends AbstractType
                     'class'     =>  'pt-0'
                 ]
             ])
-            //->add('save', SubmitType::class, array('label' => 'Enregistrer'))
+            ->add('save', SubmitType::class, [
+                'label' => 'Enregistrer',
+                'row_attr'   =>  [
+                    'class' => 'mb-3'
+                ]
+            ])
         ;
     }
 

+ 33 - 0
src/Service/OptionsManager.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Service;
+
+use App\Entity\User;
+use App\Entity\Profile;
+use Symfony\Component\Security\Core\Security;
+
+class OptionsManager
+{
+    protected $options;
+
+    public function __construct(Security $security)
+    {
+        $this->options = new Profile;
+        if ($security->getToken() != null) {
+            $user = $security->getToken()->getUser();
+            if ($user instanceof User) {
+                $this->options = $user->getProfile();
+            }
+        }
+    }
+
+    public function vue(): string
+    {
+        if ($this->options->getView() === 0)
+        {
+            return "tableaux";
+        } else {
+            return "vignettes";
+        }
+    }
+}

+ 4 - 2
templates/profil/mespreferences.html.twig

@@ -5,11 +5,13 @@
 
 {% block body %}
     {% form_theme form 'bootstrap_5_horizontal_layout.html.twig' %}
+    {{ form_start(form) }}
     <div class="">
-        {{ form(form) }}
+        {{ form_row(form.view) }}
     </div>
     <div class="mb-3">
-        <button type="submit" class="btn btn-primary" name="profile[save]">Enregistrer</button>
+        {{ form_widget(form.save) }}
         <a href="{{ path('videotheque_liste') }}" class="btn btn-danger" role="button">Annuler</a>
+        {{ form_rest(form) }}
     </div>
 {% endblock %}