Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-03-2014 16:26:13

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

routing et helper url

Bonjour,
j'ai un souci avec mon routing.

J'ai un lien qui utilise le helper url pour définir la route du lien :

Code:

[lang=php]
<a href="<?php echo $this->url('home', array('action' => 'supprimer', 'nom' => $commande['nom_pizza'])); ?>" title="supprimer" class="delete_commande fam-delete"></a>

Donc je demande à mon lien de pointer vers la route "home",  sur mon action "supprimer", avec un paramètre "nom".

Voici ce que j'ai dans mon module.config.php :

Code:

[lang=php]
        'routes' => array(
            'home' => array(
                'type' => 'segment',
                'options' => array(
                    'route'    => '/',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'nom' => '[a-zA-Z0-9_-]*',
                    ),
                    'defaults' => array(
                        '__NAMESPACE__' => 'Front\Controller',
                        'controller' => 'Commande',
                        'action'     => 'index',
                    ),
                ),
                'verb' => 'get,post',
                'may_terminate' => true,
                'child_routes' => array(
                    'action' => array(
                        'type' => 'segment',
                        'options' => array(
                            'route' => '/:action[/:nom]',
                            'constraints' => array(
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'nom' => '[a-zA-Z0-9_-]*',                                   
                            ),
                            'defaults' => array(
                                '__NAMESPACE__' => 'Front\Controller',
                                'controller' => 'Commande',
                                'action' => 'index',
                            )
                        ),
                        'may_terminate' => true
                    )
                )
            ),

Lorsque je click sur le lien, la page se recharge (sur l'action index) au lieu de me charger la page de l'action "supprimer".

Pourquoi?

Merci!

Hors ligne

 

#2 30-03-2014 16:46:51

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: routing et helper url

problème résolu :

Code:

[lang=php]
<a href="<?php echo $this->url('home/action', array('action' => 'supprimer', 'nom' => $commande['nom_pizza']), null, false); ?>" title="supprimer" class="delete_commande fam-delete"></a>

Hors ligne

 

#3 31-03-2014 17:34:56

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: routing et helper url

Mon action est bien appelée, cependant l'url est de cette forme :
http://localhost/rp//supprimer/20

Comment faire pour obtenir une url plus propre du style : localhost/rp/supprimer/20 ??

Hors ligne

 

#4 31-03-2014 17:51:52

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: routing et helper url

Ecoute...
Orkin va péter une barre, s'il passe par la.. ^^

faut absolument que tu te débrouille pour enlever ce paramètre d'action

il est vraiment important de différencier les route add, delete, update ...
Tu va gagner énormément à prendre le temps de clarifier tes routes smile

SI tu veux plus comprendre pourquoi regarde les sujets traitants déjà du routing y à pas mal d'explication dessus wink

je sais pas d'où viens ton /rp/ mais ça viens de la, tu devrais le remplacer par /rp

Dernière modification par flobrflo (31-03-2014 17:52:02)

Hors ligne

 

#5 31-03-2014 17:54:26

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: routing et helper url

Salut, tu peux déjà commencer par configurer correctement tes routes en retirant les actions du plugins url et en les spécifiant dans des routes filles uniques ! Là t'as juste un slash en trop mais honnêtement pas envie de débugger des routes avec des regexp de partout. Donc fais des routes filles et ensuite on voit ce qui ne va pas (ça sera probablement résolu en plus)

Hors ligne

 

#6 31-03-2014 17:56:31

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: routing et helper url

aïe je te l'avais dit t'a vexé Orkin =x

Hors ligne

 

#7 31-03-2014 18:06:41

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: routing et helper url

hihi désolé^^, je vais mettre des child_route alors.

le rp = nom_du_site (projet)

Hors ligne

 

#8 31-03-2014 18:08:36

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: routing et helper url

et bien vérifie dans ton htaccess ou quelque pars par la, après rp tu à du mettre un / en trop

Hors ligne

 

#9 31-03-2014 18:32:04

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: routing et helper url

Bon mon nouveau module.config.php :

Code:

[lang=php]
        'routes' => array(
            'home' => array(
                'type' => 'Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Front\Controller',
                        'controller' => 'Commande',
                        'action'     => 'index',
                    ),
                ),
                'verb' => 'get,post',
                'may_terminate' => true,
                'child_routes' => array(
                    'supprimer' => array(
                        'type' => 'Segment',
                        'options' => array(
                            'route' => '/supprimer/:id',
                            'constraints' => array(
                                'id' => '[1-9][0-9]*',                                   
                            ),
                            'defaults' => array(
                                'action' => 'index',
                            )
                        ),
                        'verb' => 'get',
                    ),
                    'annuler' => array(
                        'type' => 'Literal',
                        'options' => array(
                            'route' => '/annuler',
                            'defaults' => array(
                                'action' => 'index',
                            )
                        ),
                        'verb' => 'get',
                    ),
                    'valider' => array(
                        'type' => 'Literal',
                        'options' => array(
                            'route' => '/annuler',
                            'defaults' => array(
                                'action' => 'index',
                            )
                        ),
                        'verb' => 'get',
                    )
                )
            ),

et l'appel du helper url :

Code:

[lang=php]
<?php echo $this->url('home/supprimer', array('id' => $commande['id_commande']), null, false); ?>

J'ai toujours, le "rp//supprimer/22".

Le .htacess, je n'y est pas touché, il est d'origine donc aucune présence du "rp".

"rp" est en faite un Alias défini dans httpd-vhosts.conf de Apache :

Code:

Alias /rp "C:\Users\moi\Documents\GitHub\monsite\public" 

<Directory "C:\Users\moi\Documents\GitHub\monsite\public">
    AllowOverride None
    Order Deny,Allow
    Allow from all

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteBase /rp
    RewriteRule ^.*$ - [NC,L]
    RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php [NC,L]
</Directory>

<VirtualHost *:80>
    ServerName rp.local
    DocumentRoot "C:\Users\moi\Documents\GitHub\monsite\public"
    # This should be omitted in the production environment
    SetEnv APPLICATION_ENV development
 
    <Directory "C:\Users\moi\Documents\GitHub\monsite\public">
        Options -Indexes -MultiViews +FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ /index.php [NC,L]
</Directory>
</VirtualHost>

Dernière modification par romsVLM (31-03-2014 18:35:42)

Hors ligne

 

#10 31-03-2014 18:51:40

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: routing et helper url

Effectivement il y a un "/" qui se rajoute.

Lorsque je tape cette url : http://localhost/rp

Je suis ridirigé vers cette url : http://localhost/rp/

Hors ligne

 

#11 31-03-2014 23:52:40

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: routing et helper url

Fais un virtualhost comme conseillé sur la doc wink. Ca évite ce genre de désagrément aussi. Mise à part que toutes tes routes appelles la fonction index de Front\Controller c'est déjà bien mieux wink !!

Hors ligne

 

#12 01-04-2014 09:01:30

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: routing et helper url

Oui et attention ta route validé utilise: /annuler

Hors ligne

 

#13 01-04-2014 11:32:59

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: routing et helper url

J'ai viré l'alias et laissé uniquement le virtual host.

Le problème du "/" est résolu.

nouveau fichier module.config :

Code:

[lang=php]
        'routes' => array(
            'home' => array(
                'type' => 'Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Front\Controller',
                        'controller' => 'Commande',
                        'action'     => 'index',
                    ),
                ),
                'verb' => 'get,post',
                'may_terminate' => true,
                'child_routes' => array(
                    'supprimer' => array(
                        'type' => 'segment',
                        'options' => array(
                            'route' => 'supprimer/:id',
                            'constraints' => array(
                                'id' => '[1-9][0-9]*',                                   
                            ),
                            'defaults' => array(
                                'action' => 'supprimer',
                            )
                        ),
                        'verb' => 'get',
                    ),
                    'annuler' => array(
                        'type' => 'Literal',
                        'options' => array(
                            'route' => 'annuler',
                            'defaults' => array(
                                'action' => 'annuler',
                            )
                        ),
                        'verb' => 'get',
                    ),
                    'valider' => array(
                        'type' => 'Literal',
                        'options' => array(
                            'route' => 'valider',
                            'defaults' => array(
                                'action' => 'valider',
                            )
                        ),
                        'verb' => 'get',
                    )
                )
            ),

voici l'url obtenu lors d'un appel au helper url :
rp.local/supprimer/22

Tout fonctionne. Merci beaucoup

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