IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Symfony 2.7.5 : conseil structure views site web


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut Symfony 2.7.5 : conseil structure views site web
    Bonjour,

    Je suis en pleine conception de mon premier site avec Symfony. Celui-ci à des grandes sections et des sous sections.
    J'ai pu lire ceci dans la doc sur les bonnes pratiques :

    As a rule of thumb, you should follow the 5-10-20 rule, where controllers should only define 5 variables or less, contain 10 actions or less and include 20 lines of code or less in each action. This isn't an exact science, but it should help you realize when code should be refactored out of the controller and into a service.
    Voici donc mes questions :

    1) Dois-je créer un contrôleur par grande section ou un seul contrôleur est envisageable, sachant que le site comprendra pas mal de fonctions et que chaque sections aura ses spécificités
    2) Actuellement, je fais un "include" pour la barre supérieur du site (qui est commune à toutes les pages) dans base.html.twig. Les autres pages en héritent automatiquement. Cela marche bien. Petit souci, sur cette barre supérieur, j'ai un lien sur mon logo me permettant de revenir à l'accueil. Le voici : <a class="navbar-brand" href="">. Lorsque je suis dans une sous section et que je clique sur le lien, il ne me renvoi pas vers l'accueil mais vers la racine de mon contrôleur de sous section alors qu'il devrait ma ramener vers la racine du site. Une idée ?


    D'avance merci.

  2. #2
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut,

    Pour revenir à la page d'accueil de ton site, il te faut spécifier la route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # index.html.twig
    <a href="{{ path('acme_demo_bundle_homepage') }}" title="Mon site">...</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # Acme/DemoBundle/Resources/config/routing.yml
    acme_demo_bundle_homepage:
        pattern: /
        defaults: { "AcmeDemoBundle:Default:index" }
    Pour la règle, qui n'est pas une règle d'or, ils te disent :
    • Ne pas avoir plus de 5 variables dans le contrôleur
    • Ne pas avoir plus de 10 actions dans le contrôleur
    • Pas plus de 20 lignes par action


    C'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    protected DefaultController extends Controller
    {
       protected $variable; //  => Pas plus de 5
     
       protected function MachinAction() {} // => Pas plus de 10
     
       protected function TrucAction() {
          // => Pas plus de 20 lignes
       }
    }
    Donc, tu peux faire autant de contrôleurs que tu veux et c'est ce qu'ils recommandent vu les limitations ci-dessus. Donc il faut que tu trouves une organisation logique qui permet de se plier à cette règle... si tu veux la suivre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Voici la route que j'ai créé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    app:
        resource: "@AppBundle/Controller/"
        type:     annotation
    AppBundle_homepage:
        pattern: /
        defaults: { "AppBundle:Default:index" }
    Et voici le Default contrôleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    namespace AppBundle\Controller;
     
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Component\Asset\PathPackage;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
     
     
    class DefaultController extends Controller
    {
    	/**
         * @Route("/")
         */
     
        public function indexAction()
        {	
     
            return $this->render('default/index.html.twig');
     
     
     
        }
     
    }

    Et mon lien qui appelle la route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <a class="navbar-brand" href="{{ path('AppBundle_homepage') }}">
     
        </a>


    Je reçois l'erreur suivante :

    app/config\routing.yml" does not contain valid YAML in


    J'ai vérifié je n'ai pas de tabulation dans ma route.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Je me réponds à moi même. Premièrement, depuis la nouvelle version de SF2, l'utilisation des routes doit majoritairement se faire via les annotation dans les contrôleurs.
    Ensuite, il me fallait simplement utiliser ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class DefaultController extends Controller
    {
    	/**
         * @Route("/", name="homepage")
         */
     
        public function indexAction()
        {	
     
            return $this->render('default/index.html.twig');
     
     
     
        }
     
    }
    Le fait de nommer la route (name="homepage") et de l'appeler telle quel dans ma vue fonctionne à merveille.

    Merci pour ton aide.

  5. #5
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Autant pour moi, ton fichier routing.yml doit être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    app:
        resource: "@AppBundle/Controller/"
        type:     annotation
    AppBundle_homepage:
        pattern: /
        defaults: { Controller: "AppBundle:Default:index" }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Ok. Merci.

    Et sais-tu comment faire un lien vers une page mais vers une ancre directement ? Genre homepage/#...

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Par défaut
    Bonjour,

    Pour l'ancre, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><a href="{{ path('AppBundle_homepage') }}#monAncre">Aller à mon ancre</a></p>

Discussions similaires

  1. Structure pour site web.
    Par Snooky68 dans le forum Débuter
    Réponses: 0
    Dernier message: 26/09/2009, 01h30
  2. conseils auto-entrepreneur site web
    Par kate59 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 04/08/2009, 23h00
  3. Structure de site web : votr avis m'intéresse
    Par Mindiell dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2009, 09h00
  4. Structure MVC site web
    Par mathieu3392 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/03/2009, 11h38
  5. [Conseil] structure du site
    Par Dr@ke dans le forum JSF
    Réponses: 14
    Dernier message: 11/10/2007, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo