[RESOLU] comment passé un paramètre avec le système derouting

Mammouth du PHP | 790 Messages

21 nov. 2012, 12:05

Salut a tous,
j'ai voulu installer un système de routing, chose que j'ai réussi mais voila: désormais il m'est impossible de passer un paramètre supplémentaire pour une page de pagination par exemple...

j'ai l'impression que cela viens du htaccess:
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteRule ^index\.html$ index.php?page=/
	RewriteRule ^([a-zA-Z0-9-]*\.html)$ index.php?page=$1
</IfModule>
avant mon url de blog était celle-ci: index.php?module=2&page=liste-blog et après avoir cliquez un lien de pagination celle-ci: index.php?module=2&page=liste-blog&id=2
maintenant avec le routing, l'url du blog est celle-ci: liste-blog.html et impossible de passer un paramètre en plus...

avez vous une petite idée ?
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Mammouth du PHP | 790 Messages

21 nov. 2012, 12:41

le var_dump de la classe routing pour la page blog est donne ca:
array (size=3)
          'name' => string 'liste-blog' (length=10)
          'path' => string 'liste-blog.html' (length=15)
          'template' => string 'modules/blog/vues/liste-blog.php' (length=32)
ne manque t'il pas la possibilité d'avoir un perem pour la pagination en plus...
ou bien d'apres vous, est il possible d' passer un param par le path: 'path' => string 'liste-blog.html' (length=15) ?
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Avatar du membre
Mammouth du PHP | 1609 Messages

21 nov. 2012, 13:19

Comment écris-tu le lien de pagination ?
Développeur web depuis + de 20 ans

Eléphant du PHP | 127 Messages

21 nov. 2012, 15:28

Juste pour info (je n'ai aps bcp de temps), voici le .htacces de CakePHP :

Code : Tout sélectionner

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>

Mammouth du PHP | 790 Messages

21 nov. 2012, 15:38

Salut Saian,
le lien est en fait un objet de pagination et le voile comme il était avant:
$cat->Show_Pagination("index.php?module=$id&page=$nom_page", $param_url, 'pagination');
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Avatar du membre
Mammouth du PHP | 1609 Messages

21 nov. 2012, 15:41

Salut juliette,

ok et le lien en résultant dans le code html il est comment ?

J'ai bien une idée mais je pense quelle n'est pas parfaite. Tu pourrais générer un lien de pagination type blog-list-numero_page.html ou numero_page est le numéro de la page.
Mais du coup avant d'injecter page dans ton système de routage il faut que tu en extrais les paramètres supplémentaires, en l’occurrence le numéro de la page. Et tu vas avoir du mal vu que tes noms de pages contiennent des -.
Tu pourrais tout de même faire style blog-list--2.html et faire un explode sur --, tu aurais ainsi la page en 0 et les paramètres supplémentaires en 1.
Développeur web depuis + de 20 ans

Mammouth du PHP | 790 Messages

21 nov. 2012, 15:53

Bon, j'ai trouver, avec le htaccess de nhachet que j'ai modifie comme ceci:
<IfModule mod_rewrite.c>
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-]*\.html)$ index.php?page=$1 [QSA,L]
</IfModule>
et ta question sur la pagination Saian, je me suis rendu compte qu'avant il me fallait 2 param, $module et $page mais maintenant il ne me faut que $page et du coup ma classe pagination ajouter un $ au lieu de 1 ?

pour le coup cela me pose un nouveau souci, l'url est comme ceci: WSU-MVC/liste-blog.html?id=2 avec le .html, dois-je une nouvelle fois réécrire l'url dans le htaccess car j'ai déjà chercher mais je n'ai pas réussi a transformer le .html en .php dans les routing mais rien a faire...
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Mammouth du PHP | 790 Messages

21 nov. 2012, 15:58

Saian, c'est compliqué pour moi a mon niveau ce que tu dis, ne serait t'il pas plutôt pas plus judicieux pour la facilité de transformer ce .html en .php et ajouter une nouvelle réglé au htaccess ?
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Avatar du membre
Mammouth du PHP | 1609 Messages

21 nov. 2012, 16:01

Dans le htaccess les RewriteRule sont écrites avec des expressions régulières.
Avec :
RewriteRule ^([a-zA-Z0-9-]*\.html)$ INDEX.php?page=$1
page va être égale à tout ce que contient ta première parenthèse capturante donc "blog-list.hmtl" $1 faisant référence à ([a-zA-Z0-9-]*\.html).

Si tu veux retrouver id=2 tu vas le récupérer dans $_GET['id'].
D'ailleurs ta réécriture ne doit pas fonctionner avec blog-list.hmtl?id=2 car tu as mit un $ à la fin de la réécriture ce qui veut dire que l'adresse doit finir par .html et comme ça n'est pas le cas... mais je sais pas si le ? et ce qui est derrière est prit en compte lors du matching de la règle.
Développeur web depuis + de 20 ans

Mammouth du PHP | 790 Messages

21 nov. 2012, 16:06

non, c'est pas ce que je veux dire...
Je parle des routes:
// Modules BLOG
$app->initRoute("liste-blog", "liste-blog.html", "modules/blog/vues/liste-blog.php");
c'est dans le 2eme paramètre de la route que je ne peut pas passer le liste-blog.php a la place de liste-blog.html et c'est celuila que je voudrais modifier pour avoir:
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Mammouth du PHP | 790 Messages

21 nov. 2012, 16:14

Je reviens sur mes dire, c'est bon je peux bien passer le .php dans mes routes, en fait je n'avais pas réussi d’abord a cause du htaccess et en plus a couse de la pagination que ne retournais pas le bon caractère...
Cool, un grand merci a vous deux =D> vos réponses m'ont fait me poser les bonnes questions sur un truc qui ma fait me coucher a 4h du matin et j'était presque sur le point de revenir a mes routes php 1.4 et moins
Je vous dis merci et a très bientôt pour de nouvelles aventures, j'en suis sur !!!
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.