Bonjour, encore merci pour ces excellents tutos, je prend plaisir à apprendre le PHP grâce à Grafikart.
Le souci auquel je me heurte c'est que j'ai adapté le site "PHP de A à Z" en multilingue.
Mais je pense que j'ai perdu une part d'url rewriting car avant que j'internationalise le site, les liens étaient sexy :
"http://www.monsite/ page / slug-id /..."
Maintenant l'url de mon site ressemble à ça :
"http://www.monsite/ fr / page / View / id / slug..."
J'ai quand même passé deux nuit blanches d'affilé devant la vidéo à suivre les expressions régulières et tout mais quelle embrouille !!.. Bon au final ça fonctionne alors je suis super contant quand même.
voici mon code :
j'ai ajouté une fonction dans le dispatcher :
function loadLanguage(){
$name = $this->request->language;
$file = ROOT.DS.'language'.DS.$name.'.php';
require $file;
}
J'ai mis des fichiers php dans le dossier root/language/, un pour chaque langue.
dans ces fichiers j'ai casé une classe très courte :
class _ {
public $langue = 'fr'; // Langue à utiliser pour rendre la vue
const exemple1 = 'Mon premier texte en français';
const exemple2 = "C' est un deuxième exemple éh éh !!";
const numero = 'un, deux, trois';
}
puis je l'appelle ainsi :
<?php echo _::exemple1 ?>
voici le routing, j'ai simplement repris l'idée du prefixes avec un "array-shift($params)".
}
$params = explode('/',$url);
$request->language = $params[0];
array_shift($params);
if(in_array($params[0],array_keys(self::$prefixes))){
$request->prefix = self::$prefixes$params[0]];
array_shift($params);
}
$request->controller = $params[0];
$request->action = isset($params[1]) ? $params[1] : 'index';
foreach(self::$prefixes as $k=>$v){
if(strpos($request->action,$v.'_') === 0){
$request->prefix = $v;
$request->action = str_replace($v.'_','',$request->action);
}
}
et dans la config des URL j'ai ajouté les langues avant et après le parsing.
Bon ben voilà, Ce que je souhaiterais trouver maintenant c'est une solution pour virer le "view", et éventuellement mettre l'id là où je veux, à défaut de le virer aussi mais ça je ne penses pas que ça soit possible, à moins de refaire le site.
Si quelqu'un peut m'aiguiller ça sera super.
Bon ben en fin de compte l'URL rewriting fonctionnait, il fallait juste mettre les bons liens et corriger 2-3 trucs. Donc tout beigne.