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 :

problème Url Rewriting


Sujet :

MVC PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 44
    Points
    44
    Par défaut problème Url Rewriting
    Bonsoir à tous,

    je continue d'avancer tout doucement avec Zend, et j'ai suivi les tutos.

    Mais j'ai un problème avec la mise en place de l'url rewriting.

    A l'heure actuelle, si je veux accéder à ma page d'affichage d'un certain contenu, je dois faire ça :

    http://localhost/monprojet/www/index...ajouterserveur

    Je suppose qu'il y'a un moyen de faire plus simple ?

    D'autant plus que quand on veut récupérer une variable passée en GET, on se tappe un truc du genre :

    http://localhost/monprojet/www/index...dex/modif/id/2.

    Est-ce possible d'avoir une url "normale" (de type : http://localhost/monprojet/www/index...age=modif&id=2 )??


    Voici l'architecture de mon projet :



    J'ai placé le .htaccess dans le répertoire 'www'.

    Mais en faisant ça, ce répertoire n'est plus visible, et j'obtiens une 'Internal Error'.

    Comment faire ??

  2. #2
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Coucou,

    Pour te répondre, il me semble qu'avec ZF on ne peut pas faire d'URL normale. Mais je me trompe peut être. Enfin toujours est-il que cela n'a aucun intérêt de faire avec une URL normale. Autant respecté les normes ZF c'est mieux.

    Pour le .htaccess je ne suis pas sûr mais il me semble qu'il ne faut pas le mettre dans www mais un cran au dessus non ? C'est plus logique pour apache.

    Bonne journée à toi

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Pour simplifier les URL il faut utiliser Zend_Controller_Router_Route pour définir soit des routes statiques ou répondant à une expression régulière.

    C'est utile, lorsque tu veux cacher le nom du module ou mettre des noms de controller ou d'action dans l'adresse URL beaucoup plus naturelle que technique.
    par exemple http://www.monsite/contactez-nous qui se traduira par
    un controller = accueil
    une action = message

    Concernant la syntaxe de l'URL par défaut du ZF soit
    - monsite/nomModule/nomController/nomAction/Param1/Val1/Param2/Val2....
    Tu peux également cacher Param1 et Param2, etc.. et garder que les valeurs.
    exemple: http://www.monsite/budget/31/03/2010 qui pourrait se traduire par
    - controller = budget
    - action = afficher
    - jour = 31
    - mois = 03
    - année = 2010

    Par expérience, cela demande beaucoup d'investissement pour des urls dont personne n'y prête attention, par contre pour le référencement c'est plus propre
    par exemple
    http://www.monsite/article/ZF_lesroutes
    se traduira par
    controller = article
    action = afficher
    article = zf_lesroutes.html

    Voilà pour les exemples, passons à la pratique.
    1) Définir les routes
    2) Informer le frontController des nouvelles routes
    3) utiliser les routes dans les liens <a href=""></a>

    Le plus simple est d'utiliser un fichier ini

    route.ini (voir doc officielle ici)

    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
    27
     
    [production]
    ;
    ; contactez-nous (route statique)
    ; 
    routes.contact.type  	                = Zend_Controller_Router_Route_Static
    routes.contact.route 			= "contactez-nous"
    routes.contact.defaults.module 	= "default"
    routes.contact.defaults.controller	= "accueil"
    routes.contact.defaults.action  	= "message"
    routes.contact.reverse  		= 
     
    ;
    ; Budget (route Regex)
    ;
    routes.budget.type  	                = Zend_Controller_Router_Route_Regex
    routes.budget.route 			= "budget/(.+)/(.+)/(.+)"
    routes.budget.defaults.module 	= "default"
    routes.budget.defaults.controller	= "budget"
    routes.budget.defaults.action  	= "afficher"
    routes.budget.map.1                    =  jour
    routes.budget.map.2                    =  mois
    routes.budget.map.3                    =  annee
    routes.budget.reverse  		        = 
     
     
    [production:devolpement]
    Maintenant informons notre frontController

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /** J'appelle le router actuelle de mon frontController 
     *  et lui ajoute un ensemble de nouvelles routes contenues 
     *  dans le fichier application/configs/routes.ini
     *  
    */	
    $frontController->getRouter()->addConfig(new Zend_Config_Ini($confPath . 'route.ini', $environnement), 'routes');
    Maintenant pour créer les liens, utiliser l'aide de vue 'url' en définissant les paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // dans un controller
    $this->view->url (array (
                              , 'module'    => 'default'
                              , 'controller' => 'budget'
                              , 'action'     => 'afficher'
                              , 'jour'        => '31'
                              , 'mois'       => '03'
                              , 'annee'     => '2010'
                        )
                    , 'budget'  // nom de ma route
    );
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Juste une erreur (qui n'en ai pas vraiment une) dans ta réponse,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // dans un controller
    $this->view->url (array (), 'budget);
    Redonner les paramètres est inutile dans ce cas puisque déjà défini par ta route budget!

Discussions similaires

  1. problème URL Rewriting
    Par moxyy dans le forum Apache
    Réponses: 7
    Dernier message: 07/11/2008, 11h53
  2. Problème url rewriting
    Par Valter dans le forum ASP.NET
    Réponses: 17
    Dernier message: 20/10/2008, 16h39
  3. Problèmes URL Rewriting
    Par mystar dans le forum Apache
    Réponses: 1
    Dernier message: 13/11/2007, 11h06
  4. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 14h29
  5. Problème URL rewriting
    Par Zan dans le forum Apache
    Réponses: 4
    Dernier message: 24/11/2006, 19h04

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