Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-05-2008 10:36:18

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

[1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Bonjour la communauté !

Alors en ce lundi matin, je tombe sur un nouvel os avec le helper "Url"
J'avais déjà utilisé le $this->view->url() dans une ancienne boite, avec un système déjà en place et qui fonctionne.
Je ne sais donc pas vraiment comment ça fonctionne "à l'intérieur" hmm

Du coup, j'essaye de le réutiliser chez moi, mais pas moyen de le faire fonctionner !
Pour exemple, dans le controller :

Code:

$this->view->truc = $this->view->url(array('controller'=>'index', 'action'=>'index'));

et dans la vue concernée :

Code:

<?= $this->truc; ?>

L'affichage me donne l'url de l'action actuelle au lieu d'afficher /index/index comme je m'y attendais....

C'est là que je demande votre aide... Le ZF ne comporte pas du tout comme j'en avais l'habitude. Je suis paumé sad
D'où pourrait venir le problème ? (à part d'entre le clavier et la chaise...)

Merci d'avance

EDIT : après quelques lectures, j'ai l'impression que cette méthode marche s'il y a des routes... Euh et si je n'ai pas de routes, je fais comment? hmm

Dernière modification par Bast (09-05-2008 10:39:53)

Hors ligne

 

#2 10-05-2008 11:08:17

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Salut,

Soit tu utilises le helper de contrôleur si tu es dans le contrôleur :

Code:

$this->view->truc = $this->_helper->url(array('controller'=>'index', 'action'=>'index'));
// puis dans la vue
<?= $this->truc; ?>

Soit tu utilises le helper de vue si tu es dans la vue :

Code:

<?=$this->url(array('controller'=>'index', 'action'=>'index'))?>

Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 11-05-2008 17:25:20

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Merci ^^
Je teste ça dès demain (eh oui, journée de solidarité oblige)

Hors ligne

 

#4 23-05-2008 15:55:06

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Cela fonctionne parfaitement.

Cela dit j'ai un souci : dans la vue, si j'utilise :

Code:

<?=$this->url(array('controller'=>'index', 'action'=>'index', 'param1'=>'valeur', 'param2'=>'valeur', 'param3'=>'valeur'))?>

Eh bien si jamaisl'un des paramètres existe déjà et que je rappelle la page elle même, le paramètre déjà existant gardera la première place dans l'url.

Je m'explqiue :
si je suis sur la page :
www.monsite.com/recherche/param3/valeur
Et que dans cette page, on trouve un lien qui pointe sur elle même (soit un href valant $this->url(array('controller'=>'index', 'action'=>'index', 'param1'=>'valeur', 'param2'=>'valeur', 'param3'=>'valeur')) )
Alors l'url généré sera :
www.monsite.com/recherche/param3/valeur … am2/valeur

Mais moi je voudrais que chaque param soit toujours à une même place ! (question de référencement). je ne trouve pas la solution sad
Je ne voudrais pas être contraint à générer une simple string pour mes url sad

Hors ligne

 

#5 24-05-2008 13:36:33

cortex
Membre
Date d'inscription: 22-05-2008
Messages: 33

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Je répond car je suis récemment tombé sur le meme souci :p

La réponse est simple, il faut indiquer au helper de ne pas reprendre les params déjà existant, en passant true comme troisième paramètre du helper. Ce troisième paramètre se nomme $reset et tout devient plus clair.
La deuxième paramètre indique le nom d'une route, on peut passer null dans le cas ou y'a pas de route nommée et il faut alors mettre dans le premier tableau les valeurs pour 'controller' et 'action' sinon elle valent par défaut 'index' et non l'action et le controlleur en cours !

dans la vue

Code:

<?=  $this->url( array('controller'=>'index', 'action'=>'index', 'param1'=>'valeur', 'param2'=>'valeur', 'param3'=>'valeur') , null, true) ?>

Dernière modification par cortex (24-05-2008 13:36:54)

Hors ligne

 

#6 24-05-2008 21:47:48

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Ho ho ho... J'en connais un qui va être tout fier de corriger son code lundi !!

Petite précision : dans l'url, les paramètres vont s'afficher dans l'ordre que je les passe au helper ?

Hors ligne

 

#7 26-05-2008 10:28:00

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Ah !!
Je suis déçu sad
Le 3e paramètre de la fonction url(), le reset, fonctionne bien. Les paramètres déjà présents dans l'url sont bien ignorés.
Cependant, il oublie également le controlelr et l'action.. c'est assez space en fait.

Voyez plutot :

Rappel de la route :

Code:

$router
    ->addRoute(
        'recherche',
        new Zend_Controller_Router_Route(
            'recherche2/*'
            /*array(
                'controller'    => 'recherche2',
                'action'        => 'index',
            )*/
        )
    );

appel de la route dans ma vue :

Code:

<?=  $this->url( array('param1'=>'valeur') , 'recherche', true) ?>

Le href généré (beurk) :

Code:

http://www.monsite.dev/recherche2/controller/recherche2/action/index/param1/valeur

Il me recolle le controller et l'action comme s'ils étaient des params ordinaires !
Du coup on perd tout le bénéfice du rewriting, et c'est même pire, puisque l'url n'est meme plus logique !

Retour case départ ? Ou bien un détail qui m'échappe (je préférerais) ?

Dernière modification par Bast (26-05-2008 10:29:28)

Hors ligne

 

#8 26-05-2008 11:36:15

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

et si tu dit au routeur de supprimer les routes par défaut ?


IT Dev @Twitter

Hors ligne

 

#9 26-05-2008 11:38:46

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Mais il ne s'agit pas d'une route par défaut sad.

Si tu regardes bien, il y a  :
"http://www.monsite.dev/recherche2/" qui correspond à ma route, et
"controller/recherche2/action/index/param1/valeur" qui correspondraient à des paramètres tout simples....

Hors ligne

 

#10 26-05-2008 15:01:35

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

http://www.monsite.dev/recherche2/contr … am1/valeur

c'est une route par défaut si je ne m'abuse:

Code:

/*

IT Dev @Twitter

Hors ligne

 

#11 26-05-2008 17:05:44

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Si je ne mets pas ça, alors je me retrouve avec une erreur :

Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with message 'type is not specified'

Hors ligne

 

#12 28-05-2008 10:03:32

cortex
Membre
Date d'inscription: 22-05-2008
Messages: 33

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

J'avoue ne pas comprendre non plus. Quelle version du framework as-tu ? Dans la version 1.5.2, la fonction assemble de la classe Zend_Controller_Router_Route devrait bien construire ta route comme il se doit. A savoir sans controller, ni action.

Hors ligne

 

#13 28-05-2008 10:38:02

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Je suis en 1.5.1... Ca change quelque chose ?
Au pire je peux faire la migration facilement ?

Hors ligne

 

#14 28-05-2008 12:31:22

Akis
Membre
Date d'inscription: 29-03-2008
Messages: 86
Site web

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

L'intérêt d'utiliser le helper url, c'est quand on fait des routes ? Sinon ça n'a pas beaucoup d'intérêt ?

Hors ligne

 

#15 28-05-2008 12:33:52

Bast
Membre
Date d'inscription: 07-06-2007
Messages: 138

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Si, ca peut garder un intérêt !  Route ou pas, tu peux très bien générer une url en passant une série de paramètres. Je trouve ça plus propre que de faire moi-même la concaténation.

Hors ligne

 

#16 31-05-2008 16:14:53

cortex
Membre
Date d'inscription: 22-05-2008
Messages: 33

Re: [1.5.1] Zend_View_Helper_Url, comment ça marche? Oo

Je n'apporte pas de réponse, pour la migration remplace juste temporairement ton repertoire de librairie Zend.

Sinon pour l'intérêt de la route, c'est plus que nécessaire, ça permet l'adaptation au changement pour plus tard. Imagine que tu aies codé en dur toutes tes urls et que demain on te dit, "ah ba non, on veut plus que ça soit de cette forme là mais comme ça, parce que mieux référencé tra lala." Ba, t'aura juste à modifier ton bootstrap et c'est tout !

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