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

MVC PHP Discussion :

MVC, Variable en début du chemin


Sujet :

MVC PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Par défaut MVC, Variable en début du chemin
    Salut,

    plutôt que:
    :module/:controller/:action/*

    je voudrais:
    :supervariable/:module/:controller/:action/*

    J'arrive à faire cela via les Router_Route / Router_Route_Regex, mais du coup pour gérer tout les cas de figure (module présent ou non etc...) je suis obligé d'en ajouter plusieurs, ce que je trouve un peu crados pour faire un truc si simple...

    Bref comment _simplement_ récupérer une variable postérieur au MVC ?

    Merci !

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Le MVC permet d'organiser ton code en adoptant une structure. Cette structure est fixe et hiérarchisée :
    1. Contrôleur
    2. Module
    3. Action

    Si tu cherches à mettre une variable avant le contrôleur, tu détruis cette organisation. C'est pour cela que ce n'est pas prévu par le framework.

    Pourquoi as-tu besoin de le faire, quel est ton besoin ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Par défaut
    Citation Envoyé par Yogui
    Pourquoi as-tu besoin de le faire, quel est ton besoin ?
    Je te donne direct un example:

    http://fr.netlog.com/go/register/
    http://fr.netlog.com/miSslOve09/photo/photoid=8050239

    La première partie de l'url correspond au "blog" d'une personne.
    Par defaut, lorsque tu n'es pas sur le blog d'une personne mais sur le site général (l'accueil du site, inscription etc...) un "go" (cf premier lien) remplace la variable de nom de blog. Ce "go" pourrait être n'importe quoi d'autre puis que le MVC démarre seulement après cette variable et que la distinction entre le site général (register) et le site du blogueur (miSslove09) se fait uniquement via le controlleur, quelque soit la première variable.

    Example:

    http://fr.netlog.com/miSslOve09/register
    ramène bien sur le site général, espace "register", tout comme le premier lien.


    2 avantages:

    1 - Sémantiquement, c'est plus logique d'avoir:

    http://fr.netlog.com/miSslOve09/photo/photoid=8050239
    que
    http://fr.netlog.com/photo/miSslOve09/photoid=8050239/
    (ça donne moins l'impression d'un blog indépendant)

    2 - Ca évite de manière impeccable les conflits entre nom de blog et controleur:
    Un type peut très bien créer un blog et l'appeler "register" ou "photo".

    Voila j'espère avoir été clair...

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    L'URL http://fr.netlog.com/miSslOve09/photo/photoid=8050239 ne me semble pas être MVC du tout
    Il faudrait plutôt ceci : http://fr.netlog.com/miSslOve09/photo/8050239

    Sémantiquement, c'est plus logique d'avoir:

    http://fr.netlog.com/miSslOve09/photo/photoid=8050239
    que
    http://fr.netlog.com/photo/miSslOve09/photoid=8050239/
    (ça donne moins l'impression d'un blog indépendant)
    Je ne suis pas d'accord, je trouve cela plus logique d'avoir login/photo/xxx car ce sont bel et bien les photos de cette personne. Si au contraire ce sont des photos de tout le site (et pas de cette personne en particulier), alors l'URL est très mal choisie à mon avis (le pseudo ne devrait pas du tout apparaître, en ce cas).

    Ca évite de manière impeccable les conflits entre nom de blog et controleur:
    Un type peut très bien créer un blog et l'appeler "register" ou "photo".
    Tu confonds probablement "sous domaine" et "répertoire"
    D'un autre côté, il est inutile d'avoir un "register" pour chacun de tes membres. Tu devrais avoir un register global, donc une action du contrôleur principal.


    Je pense que tu as des URLs en double, ou plutôt le même contenu accessible par plusieurs URLs. C'est très mauvais pour le référencement, il faut que tu revoies la structure de ton site.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Par défaut
    J'ai bien en tête de respecter un minimum le schéma MVC:

    Index du blog: www.site.com/userX

    Ajouter une photo: www.site.com/userX/photo/add
    controller: photo
    action: add

    Virer un message: www.site.com/userX/blog/del/messid
    controller: blog
    action: del

    Il me semble logique pour ce genre de service que le nom du blog reste en amont de l'url.

    L'étape suivante étant de faire un rewrite de sous-domaine, style:
    userX.site.com/album => www.site.com/userX/album

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Si je ne m'abuse, le modèle MVC de ZF te permet de regrouper les controllers et les actions. Je te propose de regarder de ce côté, c'est peut-être la solution que tu recherches.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Par défaut
    Citation Envoyé par Yogui
    le modèle MVC de ZF te permet de regrouper les controllers et les actions.
    Humm, je ne vois pas de quoi il s'agit, tu peux détailler stp ?

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Malheureusement non, je ne suis pas expert dans le domaine, il va falloir approfondir de ton côté.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Par défaut
    Ok, merci tout de même.

    En attendant, j'utilise un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $route = new Zend_Controller_Router_Route(
        ':username/:module/:controller/:action/*',
        array(
            'username' => 'www',
            'module'    => 'default',
            'controller' => 'index',
            'action'     => 'index'
        )
    );
    $router->addRoute('default', $route);
    Le problème est qu'il faut en mettre plusieurs, pour gérer l'absence de module ou autre dans la requête...

    Je continue donc à chercher quelque chose de plus élégant.

    Merci pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] MVC, variables globales et chemins vers les vues
    Par grinder59 dans le forum Langage
    Réponses: 0
    Dernier message: 20/11/2014, 11h48
  2. MVC Variables du controler à la vue
    Par tumadortant dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2011, 16h56
  3. [MVC] Variable statique
    Par Nadd dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/10/2009, 08h22
  4. [FLASH MX2004] Chemin de variable
    Par nirousse dans le forum Flash
    Réponses: 2
    Dernier message: 09/08/2004, 11h56
  5. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38

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