Bonjour à tous !
En un peu moins d'une semaine, j'ai suivi le tutoriel "Développer un site dynamique de A à Z en MVC" avec attention.
Je tiens tout d'abord à remercier la personne qui a fait le tutoriel car il m'a beaucoup aider avec la POO et la structure MVC.

Au final, tout marche très bien, pas de problème ! J'ai donc voulu me modifier en fonction de mes besoins.

Voici donc mes modifications :
A lieu d'avoir des articles ( posts de type post ) appartenant à une catégorie, j'ai des articles ( cette fois ci dans une table article ) appartenant à une sous rubrique ( d'une table sousrubrique ) et ces sous-rubrique appartiennent à différentes rubriques ( de la table rubriques ).
Si vous préférez, j'ai des rubriques qui contiennent des sous rubriques qui contiennent elles même des articles. Le tout dans trois tables différentes reliés par des clés étrangères.

J'ai donc crée mes Controllers Rubriques, Articles et SousRubriques ( J'ai supprimé Post et Category ) et j'ai réussi à afficher sur mon navigateur, après avoir créé les fonctions au préalable, les sous-rubriques appartenant à telle rubrique et j'ai aussi réussi à afficher les articles appartenant à une telle sous-rubrique.

Pour arriver à cela, j'ai aussi modifier le fichier conf en ajoutant ces deux lignes :

Router::connect('sous-rubrique/:slug','articles/srubrik/slug:([a-z0-9\-]+)');
//L'url ressemble à http://127.0.0.1/Tuto/sous-rubrique/slugdemasous-rubrique et affiche tout les articles de cette sous-rubrique
Router::connect('rubrique/:slug','srubriques/rubrik/slug:([a-z0-9\-]+)');
//L'url ressemble à http://127.0.0.1/Tuto/rubrique/slugdemarubrique et affiche toutes les sous-rubriques de ma rubrique

Cependant je dois maintenant afficher les articles de tel sous-rubrique de tel rubrique avec un URL de type :
http://127.0.0.1/Tuto/rubrique/nom de ma rubrique/sous-rubrique/nom de ma sous-rubrique

Mais je ne sais pas du tout comment m'y prendre, j'ai essayé par ignorance de créer cette ligne la :

Router::connect('rubrique/:slug/sous-rubrique/:slug','srubriques/rubrik/slug:([a-z0-9\-]+)/articles/srubrik/slug:([a-z0-9\-]+)');

mais j'ai l'erreur :
Warning: preg_match() [function.preg-match]: Compilation failed: two named subpatterns have the same name at offset 59
pointant la ligne :

if(!$match && preg_match($v'redirreg'],$url,$match)){

Peut-être dois-je recréer une fonction ? Modifier le Router ? ( code où j'ai quasiment rien compris pendant le tuto ^^ ).

Merci d'avance.

5 réponses


Tu peux pas avoir 2 fois slug dans l'url il ne sera pas capable de faire la différence.

AntoineL
Auteur

Ok, c'est bien ce que je me disais.

Sinon afin de pouvoir faire la différence entre les deux, je dois modifier la class Router ?
Si c'est cela, ça a être compliqué pour moi ^^.

Peut-être en créant une nouvelle fonction redirect prenant en compte deux arguments (:args:) ?

en faisant :slug1 et :slug2 :)

AntoineL
Auteur

J'ai essayé de différencier le slug de la rubrique et celui de la sous rubrique, mais j'ai toujours la même erreur, bizarre.

J'ai trouvé une pseudo solution en fait,

Router::connect('rubrique/*/:slug','articles/srubrik/slug:([a-z0-9\-]+)');

srubrik étant une fonction renvoyant tous les articles d'une telle sous-rubrique

L'url ressemble du coup à rubrique/slugdemarubrique/slugdemasousrubrique

Par contre si je veux rubrique/slugdemarubrique/slugdemasousrubrique/slugdemonarticle ca ne marche pas...
Je ne suis pas sorti de l'auberge ^^

AntoineL
Auteur

Peux-tu expliquer 'en gros' comment faire pour différencier les deux slugs ?

J'ai juste à modifier le fichier conf ?

Je vais regarder encore une fois le tuto a propos des Routes ce soir mais je suis pas sur de comprendre...

Merci.

PS : Désolé du double post.