Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-09-2010 15:00:07

EricS
Membre
Date d'inscription: 15-04-2009
Messages: 60

[1.10]Belles Urls

Bonjour,

Est il possible de transformer les url du framework '/controller/action/var/valeur ....'
'belles urls'  genre : xxx.html


Merci d'avance.

Dernière modification par EricS (20-09-2010 15:59:45)

Hors ligne

 

#2 20-09-2010 16:57:12

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.10]Belles Urls

Complètement, tu peux avoir les url que tu veux même avec des variable du type:

domaine.com/nouvelles/titre-de-nouvelles

Par contre, il faut bien comprendre le système, un débutant aura besoin d'adaptation:

http://framework.zend.com/manual/en/zen … outer.html

Hors ligne

 

#3 20-09-2010 17:04:00

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: [1.10]Belles Urls

C'est un peu déroutant au début.
Mais en fin de compte, au lieu de passer par de l'URL Rewriting version Apache (htaccess), eh bien tu crées tes redirections avec les routeurs de Zend.
Il faut surtout bien prendre le temps d'étudier le fonctionnement, et quand tu as bien tout assimilé, tu fais ce que tu veux avec les routeurs.

Hors ligne

 

#4 21-09-2010 14:43:15

EricS
Membre
Date d'inscription: 15-04-2009
Messages: 60

Re: [1.10]Belles Urls

Merci à vous.

Je vais potasser ça.

Hors ligne

 

#5 22-09-2010 11:21:37

My_Sic
Membre
Date d'inscription: 06-09-2010
Messages: 49
Site web

Re: [1.10]Belles Urls

Si tu a déjà une application tournante avec un ensemble de route déjà définie, et que tu n'as pas envie de te casser la tête à tout modifier (transformer les routes static en regex...) tu peux utiliser le chaînage de route.

Tu crée un route statique avec le motif html, tu définie le séparateur de chaînage comme étant le caractère '.'.
Puis tu chaîne les anciennes routes avec cette dernière.

Ce type de solution peut-être utilisé aussi pour rajouter à un site déjà en production, un paramètre de langue dans l'url (ex : www.monsite.net/FR/mapage) sans avoir à modifier toutes les vues.


http://www.centurion-project.org: Full stack Framework based on Zend Framework; led by:
http://www.octaveoctave.com: an enthusiastic web agency full of passionate.
http://www.cache-pistache.com: French blog on ZF and SF perfomance

Hors ligne

 

#6 06-10-2010 09:38:20

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [1.10]Belles Urls

Bonjour à tous,

je me permets d'utiliser ce thread pour demander de l'aide sur le même sujet.

En effet, je suis totalement perdu en ce qui concerne la réécriture d'URL.

Voici comment je procède avec deux routes.
Dans le bootstrap :

Code:

    protected function _initRoutes()
    {
        $routeur = Zend_Controller_Front::getInstance()->getRouter();
        
        $routeur->addRoute('identification',
            new Zend_Controller_Router_Route_Static(
                'identification',
                array('module' => 'default', 'controller'    => 'login',    'action' => 'seloguer')
            )
        );/**/
        
        $routeur->addRoute('lirevideo',
            new Zend_Controller_Router_Route(
                'lirevideo/:id/:tag',
                array('module' => 'default', 'controller'    => 'video',    'action' => 'lire')
                )
        );/**/
        
        return $routeur;
    }

Ainsi, pour s'authentifier, la personne ne va plus sur http://monsite/login/seloguer mais sur http://monsite/identification

Dans mon layout :

Code:

    <a href="<?php echo $this->view->url(array('identification'), "identification"); ?>">S\'identifier</a>

Cela marche, à un détail près.
Admettons que la personne soit arrivée sur le site ainsi : http://monsite/index.php
Alors le lien vers l'identification sera : http://monsite/index.php/identification !

Cela va fonctionner, mais c'est laid et trompeur !  sad



Concernant la seconde URL, j'ai un plus gros problème.
Je l'appelle ainsi dans une vue ou layout :

Code:

    <a href="<?php echo $this->url(array('id'=>$this->idvideo, 'tag'=>$this->tag), "lirevideo");?>"> lien vers vidéo </a>

Cela réécrit bien http://monsite/video/lire/id/4/tag/Asimov en http://monsite/lirevideo/4/Asimov

Mais pour une raison qui m'échappe, je ne peux plus écrire aucun $this->url() dans la page (vue ou contrôleur) appelée sans y inclure les paramètres id et tag !  o_O
Sinon cela provoque une exception de Zend qui me dit que le paramètre est manquant.


Bref, voici mon objectif, peut-être me montrerez-vous une meilleure façon de l'atteindre !?
Je veux réécrire les classiques urls zend
/monsite/controller/action/param1/p1/param2/p2
en :
/monsite/nom_action/p1/p2

L'idéal serait que p1 et p2 n'apparaissent pas dans l'adresse mais soient quand-même envoyés en paramètres récupérables (là j'en demande trop je suppose).


Je pensais avoir compris comment faire (la doc est assez complète et claire pour une fois) mais le fait que les autres urls dans mes pages soient aussi réécrites alors qu'elles n'ont rien à voir, et les divers problèmes que je rencontre, fait que je préfère repartir de zéro avec votre aide.


Merci d'avance.

Dernière modification par gmifsud (06-10-2010 09:38:40)

Hors ligne

 

#7 06-10-2010 12:26:20

playmobilette
Membre
Date d'inscription: 05-10-2010
Messages: 50

Re: [1.10]Belles Urls

Est ce que les autres url plus bas utilisent bien les routes, dans le cas contraire ce que j'ai compris c'est qu'il va utiliser la dernière route donc ici "lirevideo", du coup les paramètres vont être manquant... Pour ma part je spécifie toujours le nom de la route avec le helper Url

Hors ligne

 

#8 06-10-2010 17:15:20

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [1.10]Belles Urls

Oui, je précise toujours le module, le contrôleur et l'action.

Malgré cela ça ne fonctionne pas et ça réécrit des urls qui ne devraient pas être touchées... sad

Hors ligne

 

#9 06-10-2010 18:38:54

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [1.10]Belles Urls

J'ai lu rapidement mais tu peux spécifier des paramètres par défaut lorsque tu définis tes routes

Code:

    
protected function _initRoutes()
    {
        $routeur = Zend_Controller_Front::getInstance()->getRouter();
        
        $routeur->addRoute('identification',
            new Zend_Controller_Router_Route_Static(
                'identification',
                array('module' => 'default', 'controller'    => 'login',    'action' => 'seloguer')
            )
        );/**/
        
        $routeur->addRoute('lirevideo',
            new Zend_Controller_Router_Route(
                'lirevideo/:id/:tag',
                array('module' => 'default', 'controller'    => 'video',    'action' => 'lire',  'id' => '0', 'tag => '')
                )
        );/**/
        
        return $routeur;
    }

et il y a un paramètre (bool) dans le helper d'url qui permet d'empêcher l'utilisation des paramètre déjà présent dans l'url courante.

Hors ligne

 

#10 07-10-2010 14:08:29

gmifsud
Membre
Date d'inscription: 29-04-2010
Messages: 75

Re: [1.10]Belles Urls

Je n'avais pas vu pour les paramètres par défaut dans la définition de la route.
Je vais tester ça dès que je peux, merci pour le tuyau.

Hors ligne

 

#11 07-10-2010 15:04:45

playmobilette
Membre
Date d'inscription: 05-10-2010
Messages: 50

Re: [1.10]Belles Urls

Pour ma part j'aimerai avoir des Url pointant vers des fichiers PDF de cette forme /pdf/nomfichier plutot que /nomfichier.pdf est ce que quelqu'un a une idée j'ai essayé avec les RewriteRule de apache de mon htAccess sans succès

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages