Bonjour,

Petite question sur un détail que je ne parviens pas à résoudre...

J'aimerai faire d'une entrée via un input, un menu et son slug

Donc, en gros, si je rentre "Super test", qu'il me donne un champs slug avec "super-test"...

Tout fonctionne nikel avec le url_title($str) MAIS
Si un caractère accentué est entré, la, ça marche plus du tout..

Et, je ne trouve pas le moyen de regler cette betise..

J'ai bien une fonction qui marche nikel sur d'autres projets (non CI) mais pas moyen de l'y intégrer..

(j'en ai fais une "library" sur CI mais, le $this->load->library('monurl') répond "unable to load"...
(et je l'ai placée dans "libraries" en suivant http://www.codeigniter.fr/user\_guide/general/creating\_libraries.html )

Je nage... voir, je coule..

Si quelqu'un à une idée, je suis preneur :-)
Merci :)

1 réponse


C'est tout à fait possible,
tu peux utiliser le fonction convert_accented_characters déjà présente dans codeigniter via le helper text.
Du coup ça donne quelque chose comme cela

$data = array(
'title' => $this->input->post('title'),
'slug' => url_title(convert_accented_characters($this->input->post('title')),'dash',TRUE),
);

Alors, explications :
convert_accented_characters() va convertir les accents en lettres non accentués, je l'éxécute sur $this->input->post('title') qui correspond à mon titre.
ensuite j'applique, url_title(), à convert_accented_characters(), ce dernier va convertir les espaces en tirets (-), puis transformer les majuscules en minuscules.
Pour l'utiliser je dois lui spécifier des paramètres, "dash", qui lui fera switcher mes espaces en tirets '-',
et enfin "TRUE" pour lui dire me convertir mes majuscules en minuscules.
Et voilà le tour est joué :)