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 :

Quelle est la meilleure manière de créer une url à partir du GET


Sujet :

Zend Framework PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut Quelle est la meilleure manière de créer une url à partir du GET
    Je voudrais créer plusieurs liens à partir de requête de que je reçcois.
    Je m'explique, j'ai un formulaire de recherche qui fonctionne avec le $_GET.
    Ce formulaire contient plusieurs champs cachés qui servent au tri et à la pagination des resultats.

    Voici un exemple d'url que je recois:
    www.monsite.com/place/search?keyword=test&go=+&order=publicationDate&videoFirst=1

    Dans la page de résultat, je veux créer différents liens qui premettent à l'utilisateur de trier différemment les résultat, genre:

    trier sur le budget
    www.monsite.com/place/search?keyword=test&go=+&order=budget&videoFirst=1

    trier sans les vidéos en premier
    www.monsite.com/place/search?keyword=test&go=+&order=publicationDate&videoFirst=0

    J'ai tenté d'utilisé le helper de vue 'url', mais je ne vois pas comment configurer la partie GET de l'url.

    Qqun aurait une idée ?

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    As-tu déjà mis en place l'url rewriting afin d'obtenir une url sans extension ?
    www.monsite.com/place/search?keyword=test&go=+&order=publicationDate&videoFirst=0
    Aussi, dans la page search il te suffit de récupérer les valeurs qui sont passées en paramètre, si elle sont valorisées tu les traites, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(isset($_GET['keyword'])){
        $sql = 'SELECT * FROM articles WHERE keyword="'.$_GET['keyword'].'"';
        if(isset($_GET['order'])){
            $sql .= ' ORDER BY '.$_GET['order'].' '.(isset($_GET['go']) && $_GET['go'] == '+') ? 'DESC' : 'ASC' ;
        }   
        mysql_query($sql);
    }
    else{
        echo 'Saisissez un mot clé';
    }
    Code non testé.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Bonsoir ThomasR,

    En gros j'utilise tout l'environement de ZF avec le Zend_Controller_Front et même Zend_Layout, j'ai défini mes routes, etc...

    Mon soucis n'est pas de récupérer les paramètres de recherche dans le controller mais plutot d'arriver à générer dans la view des liens qui gardent ces paramètres. Il existe une aide de vue 'url()' pour cela mais elle zap le $_GET.

    Je voudrais, dans ma vue faire un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?= $this->url(array('order' => 'budget')) ?>"> trier par burget </a>
    Mais ceci ne marche pas ...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Crée un view_helper perso en lui passant en paramètre un tableau de ton GET ($attribs par exemple), comme _forward par exemple.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Pour le helper, c'est une idée.
    Mais je ne sais si j'ai accès à l'object request dans les aides de vue.

    Sinon, je pourrais travailler dans le controller même, mais je ne sais pas si il existe une méthode de Zend_Controller_Request qui permet d'assembler une url à partir des variable qui lui sont définies ...

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Il suffit que dans le controller tu affectes à ta vue les paramètres.

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 599
    Points
    12 599
    Par défaut
    Citation Envoyé par vg33 Voir le message
    Il suffit que dans le controller tu affectes à ta vue les paramètres.
    Pour compléter vg33
    controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function indexAction(){
     
    $this->view->param = $this->_request->getParam('leGet');
    }
    et dans la vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="<?= $this->url(array('controller'=>'leController','action'=>'uneAction','order' =>$this->param)) ?>"> trier par budget </a>

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Bonjour MaitrePylos,

    J'ai bien entendu tenté d'utiliser l'aide de vue 'url' comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?= $this->url(array('controller'=>'places','action'=>'search', 'keyword' => 'test', 'order' => 'publicationDate', 'videoFirst' => 0))) ?>"> trier par budget </a>
    Mon soucis est que l'url qui va être assemblée par l'aide de vue va ressembler à ceci :

    /places/search/keyword/test/order/budget/videoFirst/0 (la route correspondante est '/:controller/:action/*')

    L'action de mon controller, prend le GET (et pas les userParams) pour les valider au travers de la form (qui contient les validations pour chaque champ).
    Cette url, ne passera donc pas la validation...

    Il faudrait donc que je puisse spécifier à l'aide de vue 'url' d'encoder les paramètres de la facon suivante :

    /places/search?keyword=test&order=publicationDate&videoFirst=0

    Bien entendu, ma form de recherche comprend bien plus de champs ...

    J'ai peut etre loupé qqch dans la doc ou dans vos explications mais pour l'instant, je n'ai rien de concluant.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/03/2014, 19h46
  2. Quelle est la meilleure solution pour créer des Web Services?
    Par Flipmode dans le forum Services Web
    Réponses: 1
    Dernier message: 26/04/2007, 15h12
  3. Réponses: 2
    Dernier message: 19/03/2007, 16h41
  4. Réponses: 3
    Dernier message: 09/05/2006, 15h16
  5. Copie disque à disque. Quelle est la meilleur manière ?
    Par olive_le_malin dans le forum Autres Logiciels
    Réponses: 20
    Dernier message: 19/02/2006, 00h32

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