Forum CMS Made Simple FR

Version complète : [Résolu] Problème d'URL Rewriting dans un module perso...
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.1
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Salut à tous,

Je fais mes premières réécritures d'URL dans un module et j'ai un souci... Le module, c'est Skeleton au départ mais qui n'a évidement plus rien à voir avec Skeleton.

Ca a fonctionné lorsque j'avais que le paramètre "purpose" et quand j'ai ajouté category, city et name, ca a plus marché...

Dans le "setParameters" du module, j'ai enregistré la route :

Code :
[== PHP ==]
$this->RegisterRoute('/(?P<purpose>)\/(?P<category>)\/(?P<city>)\/(?P<name>)\/(?P<estate_id>[0-9]+)\/(?P<returnid>[0-9]+)$/',array('action'=>'estate_view'));

J'ai bien entendu déclaré les paramètres :

Code :
[== PHP ==]


   // purpose must be a string
   $this->CreateParameter('purpose','',$this->Lang('help_purpose'));
   $this->SetParameterType('purpose',CLEAN_STRING);
  
   // category must be a string
   $this->CreateParameter('category','',$this->Lang('help_category'));
   $this->SetParameterType('category',CLEAN_STRING);
  
   // city must be a string
   $this->CreateParameter('city','',$this->Lang('help_city'));
   $this->SetParameterType('city',CLEAN_STRING);
  
   // name must be a string
   $this->CreateParameter('name','',$this->Lang('help_name'));
   $this->SetParameterType('name',CLEAN_STRING);

Et dans l'action du module qui me génère le lien :

Code :
[== PHP ==]
       $purposeUrl=$this->getCleanedParam($estate->Purposes[0]->Name);
       $categoryUrl=$this->getCleanedParam($estate->Category);
       $cityUrl=$this->getCleanedParam($estate->City);
       $nameUrl=$this->getCleanedParam($estate->Name);
       $estate->view = $this->CreateFrontendLink($id, $returnid, 'estate_view', '',
          array('purpose'=>$purposeUrl,'category'=>$categoryUrl,'city'=>$cityUrl,'name'=>$nameUrl,'estate_id'=>$estate->EstateID),'',true,true,'',false,$purposeUrl.'/'.$categoryUrl.'/'.$cityUrl.'/'.$nameUrl.'/'.$estate->EstateID.'/'.$returnid);

Si j'enlève $category, $city et $name des 3 sections de code ca roule...

Quelqu'un aurait une idée ?

Merci !
J'ai tenté en retirant chaque paramètre mais rien à faire...
Bon bah je m'en suis sorti tout seul...

Pour info, il manquait un petit quelque chose :

Code :
[== PHP ==]
$this->RegisterRoute('/(?P<purpose>)\/(?P<category>)\/(?P<city>)\/(?P<name>)\/(?P<estate_id>[0-9]+)\/(?P<returnid>[0-9]+)$/',array('action'=>'estate_view'));

est devenu

Code :
[== PHP ==]
$this->RegisterRoute('/(?P<purpose>.+)\/(?P<category>.+)\/(?P<city>.+)\/(?P<estate_id>[0-9]+)\/(?P<returnid>[0-9]+)$/',array('action'=>'estate_view'));

Soit ce qui posait problème c'est qu'il manquait un ".+" dans le code du paramètre.

Code :
[== PHP ==]
/(?P<purpose>.+)\
bon, content que t'ai pu t'en sortir, personnellement je ne voyais pas ce qui clochait :/