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

Zend Framework PHP Discussion :

[Zend_Route] Route et paramètres optionnels


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très 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
    Par défaut [Zend_Route] Route et paramètres optionnels
    Bonjour à tous, j'ai deux trois questions sur l'utilisation des routes. pour configurer mes routes j'utilise un fichier routes.ini dont voici un extrait :

    Code x : 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
     
    ;account
    resources.router.routes.accountView.type = Zend_Controller_Router_Route_Regex"
    resources.router.routes.accountView.route = "account/view-id-(\d+)?(?:-(\d+)).html"
    resources.router.routes.accountView.reverse = "account/view-id-%d-%d.html"
    resources.router.routes.accountView.map.1 = id
    resources.router.routes.accountView.map.2 = statut
    resources.router.routes.accountView.defaults.id = 1
    resources.router.routes.accountView.defaults.statut = 0
    resources.router.routes.accountView.defaults.module = default
    resources.router.routes.accountView.defaults.controller = account
    resources.router.routes.accountView.defaults.action = view
    ;comment
    resources.router.routes.commentDel.type = "Zend_Controller_Router_Route_Regex"
    resources.router.routes.commentDel.route = "comment/del-id-(\d+)-c-(\d+).html"
    resources.router.routes.commentDel.reverse = "comment/del-id-%d-c-%d.html"
    resources.router.routes.commentDel.map.1 = id
    resources.router.routes.commentDel.map.2 = c
    resources.router.routes.commentDel.defaults.id = 0
    resources.router.routes.commentDel.defaults.c = 0
    resources.router.routes.commentDel.defaults.module = default
    resources.router.routes.commentDel.defaults.controller = comment
    resources.router.routes.commentDel.defaults.action = del

    Mes questions sont les suivantes :
    - Comment faire pour qu'une route n'utilise pas tous les parametre, par exemple ici comment obtenir : account/view-id-1.html et non pas account/view-id-1-0.html (j'entends par la que le param statut est renseigné à 0 si je le laisse vide, comment faire pour qu'il n'apparaisse pas si je n’écris rien ?
    - Pourquoi lorsque j'essai de passer en param un string au lieu d'un int ça ne fonctionne pas et seul la valeur par défaut s'affiche, exemple : comment/del-id-1-c-0.html alors que j'ai passé en param 'c' =>'uneChaine'


    Merci d'avance pour votre aide

  2. #2
    Membre très 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
    Par défaut
    Je répond à ma deuxième il faut utiliser \w et non \d erreur bête de ma part

  3. #3
    Membre très 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
    Par défaut
    Citation Envoyé par shadypierre Voir le message
    Je répond à ma deuxième il faut utiliser \w et non \d erreur bête de ma part
    EDIT : finalement non ça ne fonctionne pas avec \w donc les deux questions sont tjr d'actualité :/

  4. #4
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Bonjour,

    Normalement (\d+) signifie 1 ou plus digit
    Pour 0 ou plus il faut mettre(\d*)

    J'ai pas testé de mon coté

  5. #5
    Membre très 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
    Par défaut
    J'ai remplacé par \d* mais ça ne change rien (ça fonctionne mais aucun changement), je n'arrive pas à trouver d'info sur les paramètres

  6. #6
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Chez moi j'ai fait ça et ça marche:

    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
     
    // Dans mon bootstrap
            $router = Zend_Controller_Front::getInstance()->getRouter();
            $test = new Zend_Controller_Router_Route_Regex(
     
                "comment/del-id-(\d*)-c-(\d*).html",
     
                array(
                    'module' => 'default',
                    'controller' => 'index',
                    'action' => 'index'
                ),
     
                array(
                    1 => 'id',
                    2 => 'c'
                )
            );
            $router->addRoute('test',$test);
     
    // Dans mon controlleur
    Zend_Debug::dump($this->_request->getParams());
    En tapant dans mon navigateur: http://zftest.dom/comment/del-id-1-c-2.html :

    array(5) {
    ["id"] => string(1) "1"
    ["c"] => string(1) "2"
    ["module"] => string(7) "default"
    ["controller"] => string(5) "index"
    ["action"] => string(5) "index"
    }

    Et en tapant: http://zftest.dom/comment/del-id--c-.html :

    array(5) {
    ["id"] => string(0) ""
    ["c"] => string(0) ""
    ["module"] => string(7) "default"
    ["controller"] => string(5) "index"
    ["action"] => string(5) "index"
    }

    Essaie de la tester comme ça en php puis si ça fonctionne adapte là à Zend_Config

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/08/2021, 14h52
  2. Routes avec plusieurs paramètres optionnels complexes
    Par Oberown dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 29/11/2013, 09h39
  3. [2.x] Problème de routing avec un paramètre optionnel
    Par rica1503 dans le forum Symfony
    Réponses: 6
    Dernier message: 12/05/2011, 04h21
  4. Paramètre optionnel dans une fonction
    Par bractar dans le forum Langage
    Réponses: 3
    Dernier message: 10/03/2006, 17h02
  5. paramètre optionnel dans une fonction
    Par titoumimi dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2006, 15h29

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