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 :

Utilisation de Zend_Controller_Router [ZF 1.10]


Sujet :

Zend Framework PHP

  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Utilisation de Zend_Controller_Router
    Bonjour, voila je suis vraiment embêté je suis un débutant sur ZEND et c'est vraiment la galère, voila je cherche a réduire la taille de mes liens car des fois ils sont trop long.
    Il y a plein de tutoriels pour utiliser zend_controller_router mais il n'y a pas assez de détails pour les gens perdu comme moi.

    Quand on lit ce truc http://www.dator.fr/zend-framework-e...ge-specifique/
    ça à l'air simple mais on le met ou son code ?
    dans le controller de la page ?
    dans une nouvelle page qu'il faut créer ?
    et après on fait appelle comment à notre lien pour le mettre dans le href ???
    franchement galère, en plus j'aimerais faire passer 2 variables dans l'url (bon déjà 1 ca serait pas mal) Si quelqu'un peut m'aider merci...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Bonjour tomtom94500,


    Si tu veux faire la même chose que le tutoriel, il faut ajouter ce code dans ton Bootstrap.


    Cordialement,
    Ahmed.

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut
    bon donc je crée un fichier Bootstrap.php que je place dans /application/Bootstrap.php

    Dedans je colle son code


    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
    <?php
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    /*
    Ici on prépare la route, on instancie un route avec expression régulière
    qui peut comprendre n'importe quel caractère.
    Ensuite on passe en paramètre un tableau d'option :
          1 correspond au premier paramètre pour eviter de faire id/1213
          controller et action : le controlleur a réécrire et l'action à réécrire
    */
    $route = new Zend_Controller_Router_Route_Regex('produit/(.+)',array(
        1 => 'id',
        'controller' =>'produits',
        'action'     =>'detail')
    );
    // On instancie le controlleur frontal
    $frontController = Zend_Controller_Front::getInstance();
    // On récupère la router basique
    $router = $frontController ->getRouter();
    // On ajouter une route au router en spécifiant un paramètre et la route préparée
    $router ->addRoute('produit',$route);
     
    // On spécifie le dossier des controlleurs
    $frontController->setControllerDirectory('./application/controllers');
    $frontController->dispatch(); // On envoie l'application
    }
    mais après tu fais comment pour t'en servir ... Tu vois bien que je suis perdu help me un petit peu plus stp...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Ok pas de souci.

    Alors pour commencer je veux:
    1- Avoir un aperçu de la structure des dossiers de ton projet.
    2- La version de ZF tu utilise.
    3- L'URL que tu veux aboutir.

    Cordialement,
    Ahmed.

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Merci beaucoup !!!
    donc voila ma strutucture de fichiers/dossiers

    3 dossiers principaux accompagné de 2 fichiers principaux :
    index.php (description de mon fichier en bas)
    .htaccess (description de mon fichier en bas)
    application/
    controllers/
    layouts/
    layout.phtml
    models/
    views/
    scripts/
    merci-de-maider/
    index.phtml
    bootstrap.php
    library/
    Zend/
    public/
    css/
    js/
    images/



    DANS mon fichier index.php
    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
    <?php
    session_start();
     
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 0);
    date_default_timezone_set('Europe/Paris');
     
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
        . PATH_SEPARATOR . './library'
        . PATH_SEPARATOR . './application/models/'
        . PATH_SEPARATOR . get_include_path());
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
     
     
    // setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
    Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
     
     
    // run!
    $frontController->dispatch();


    DANS mon fichier .htaccess
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Règles de réécriture pour Zend Framework
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php
    
    # Sécurité : Ne pas autoriser le parcours de répertoires
    Options -Indexes
    
    # Configuration PHP
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag short_open_tag on



    Bref voila j'utilise la dernière version de ZF la 1.10 (car plus c'est récent mieux c'est)



    CE QUE je veux faire :
    Dans mon layout.phtml je balance un lien comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href='".$this->url(array('controller'=>'merci-de-maider','action'=>'index', 'page'=>$destruction, 'id'=>$destruction, 'parrain'=>$destruction))."'>Merci de m'aider</a>";
    Donc voila le truc c'est que j'utilise maximum 3 variables par lien MAXimum !!
    je me suis fixer la variable page, id, et parrain. (bref c'est vraiment artisanal)
    A ces "variables" je leur donne des valeurs vides avec $destruction (histoire que ça ne foute pas la merde partout) et quand j'ai besoin d'utiliser la variable je fais un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pagehtml="voila-ma-page-pour-google";
    $id_indique="47";
    echo "<a href='".$this->url(array('controller'=>'merci-de-maider','action'=>'index', 'page'=>$pagehtml, 'id'=>$id_indique, 'parrain'=>$destruction))."'>Merci de m'aider</a>";
    donc voila et ça me donne un truc comme ça
    http://localhost/MonProjet/merci-de-...r-google/id/47

    Voila trop long !!!!!!!!!!!!! comment faire ? pour avoir un truc raisonnable et conviviale pour google merci beaucoup j'ai plus batterie j'envoi le message vite

  6. #6
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut
    donc voila ma strutucture de fichiers/dossiers

    3 dossiers principaux accompagnés de 2 fichiers principaux :
    index.php (description de mon fichier en bas)
    .htaccess (description de mon fichier en bas)
    application/
    ---controllers/
    ------MerciDeMaiderController.php
    ---layouts/
    ------layout.phtml
    ---models/
    ---views/
    ------scripts/
    ---------merci-de-maider/
    ------------index.phtml
    ---bootstrap.php (que mettre dans ce bidule???)
    library/
    ---Zend/
    public/
    ---css/
    ---js/
    ---images/



    Bref l'objectif est de savoir ce qu'il faut mettre comme truc dans le href pour arriver à une url de ce genre http://localhost/MonProjet/47-voila-ma-page-pour-google

    Et que je puissse bien retrouver mon controller la variable id comme valeur 47 et la page comme valeur voila-ma-page-pour-google

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut Mini projet
    Bonsoir,

    Son trop parler , je t'ai fais un petit projet Zend (cf. pièce jointe) avec une implémentation du rewriting.
    Je te laisse voir l'exemple et si tu as une question chwi là!

    NB: La structure de mon exemple est un petit peu différente que la tienne car j'utilise ZF Tool, et je te le recommande vivement


    Bon courage.

    Cordialement,
    Ahmed.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Problème résolu !!!!
    Vraiment merci voila quelque chose de très clair !!!
    je vais maintenant utiliser une structure de fichiers/dossiers comme la tienne tu as l'air de t'y connaitre... !!!

    J'ai essayé de me renseigné sur ZF tool je trouve pas ce que c'est, c'est un éditeur php ? un composant ? ... si tu me le recommandes c'est qu'il me le faut !

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Vraiment merci voila quelque chose de très clair !!!
    Enjoy!

    je vais maintenant utiliser une structure de fichiers/dossiers comme la tienne tu as l'air de t'y connaitre... !!!
    Chwi toujours en apprentissage! Tu peux améliorer plus la partie ajout des routes en utilisant un Plugin ! Essaye et si tu as des problèmes chwi là

    Zend Tool c'est un petit outil qui te permet de :
    1- Créer un projet Zend.
    2- Ajouter un module.
    3- Ajouter un contrôleur.
    4- Ajouter une action.
    .... etc

    J'ai déjà expliqué ici comment l'installer sous Windows.

    Pour ce qui est utilisation RDV ici (doc de Zend).


    Cordialement,
    Ahmed.

  10. #10
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Bon j'ai un dernier probleme
    Ton code marche super bien ! je l'ai modifié pour avoir l'url que je souhaite c'est à dire un truc de ce genre :
    http://localhost/MonProjet/MonContro...ePourGoogle/Id

    Sauf que j'ai un bug, Zend me dit que je n'ai pas spécifié d'action (et il a raison Zend)
    Sauf que moi je ne veux pas spécifié d'action sinon sa fait trop long dans l'url (et c'est pas cool dans google). Comment faire ?


    Et aussi autre chose... Comment je fais ressortir la fameuse variable Id pour que je puisse l'utiliser dans mon controller qui en l'occurence s'appelle MonController.php

    Pour info j'ai bidouiller mon Bootstrap.php et maintenant j'utilise Zend_Controller_Router de cette manière
    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
     
    	protected function _initRouter()
    	{
    		// Récupère l'instance courante du router actuel si il existe sinon en créer un
    		$router = Zend_Controller_Front::getInstance()->getRouter();
     
    		// Défini la route 'article'
    		$route = new Zend_Controller_Router_Route_Regex('MonController/MonAction/[a-z0-9]/(\d{1,2})',
                    array('controller'	=> 'MonController','action'	=> 'MonAction'),
                    array(1	=> 'pagehtml',2	=> 'id',),
                    'MonController/%s/%s');
     
        	// Ajoute la route au router et renvoi l'objet
        	$router->addRoute('Description', $route);
    	}
    et j'affiche mon href de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->url(array('pagehtml' => $sdfeeesfghezgdcdf[0],'id' => $id,), 'Description');

  11. #11
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut
    je crois qu'il faut utiliser Zend_Controller_Router_Rewrite n'est ce pas ?

  12. #12
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut
    http://tezzele-julien.blogspot.com/2...eregex-la.html

    http://www.nanane.fr/2010/01/utilisa...age-avec-zend/

    Voila pour comprendre le Rewrite j'ai utilisé ces 2 tutoriels

    Maintenant... il faut que je retrouve la variable dans mon controller comment pourrais je faire ?

  13. #13
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Résolu et Résolu
    il suffit d'aller rechercher l'id de la manière classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = (int)$this->_request->getParam('id', 0);
    Rien que les liens sur zend c'est chaud quand même... Merci de la dépanne !

  14. #14
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Bonjour,

    Oui exactement , parce que tu as fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1	=> 'pagehtml',2	=> 'id')
    dans la construction de ton route!

    Cordialement,
    Ahmed.

  15. #15
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Dernier dernier probleme
    bonvoila comment faire pour mettre une variable dans l'url de manière optionnelle !!

    c'est a dire que voila mon lien
    http://localhost/MonProjet/ici-ma-pa...able-optionnel
    J'aimerais que mon router s'adapte tout seul pour qu'il me sorte aussi bien un truc de ce genre :
    http://localhost/MonProjet/ici-ma-page

    voila ce que je fais dans le bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $route = new Zend_Controller_Router_Route_Regex('ici-ma-page(?/(.+))?',
                    array('controller'=>'MonController', 'action'=>'MonAction'),
                    array(1=>'page'),
                    'ici-ma-page%s');
    Apparement dans tous les tuto ça se passe comme ça !
    sauf que voila ce qui sort dans mon href (avec id=47)
    http://localhost/MonProjet/ici-ma-page47
    alors que je veux http://localhost/MonProjet/ici-ma-page/47
    Je suis pas très bon niveau expression régulière en php mais ce truc (?/(.+))? me semble bon, deplus abenlahsen dans ton exemple en fichier joint tu as essayé de faire un truc dans ce genre... Comment faire ?

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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