Gestion de l'url (slug)

Par Mn0073RF, il y a 10 ans


Bonjour à tous je suis depuis un certain temps le tuto créer un site web de A à Z de ce site:
au faite mois j'aimerais que c'est soit l'utilisateur qui édite un blog alors le problème est au niveau du slug ou l’url, on ne peut pas demander à un utilisateur de saisir un slug avec toutes ces contraintes (ex : ma-première-nuit-de-noce) c’est trop pertinent pour un utilisateur profane de le faire.
Alors il n’y a t-il pas une fonction php qui peut prendre automatiquement le titre du blog et y ajouter les - - - (les trait d’union) ?
Merci d'avance.

5 réponses

shinix, il y a 10 ans

Salut, tu peux le faire avec une fonction toute simple

function slugify($text) { // replace non letter or digits by - $text = preg_replace('~[^\\pL\d]+~u', '-', $text); // trim $text = trim($text, '-'); // transliterate if (function_exists('iconv')) { $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); } // lowercase $text = strtolower($text); // remove unwanted characters $text = preg_replace('~[^-\w]+~', '', $text); if (empty($text)) { return 'n-a'; } return $text; }
Mn0073RF, il y a 10 ans

Merci bien j'essai d’implémenter la fonction et je vous dis quoi.

Mn0073RF, il y a 10 ans

Merci ça marche.
Mais ce que je veux en plus ce que quand un utilisateur ou l’administrateur saisi le titre de son blog directement cette fonction crée le slug et l’envoie directement sur la zone slug que je veux mettre à hidden.
Bref une action onchange qui fait passer directement le slug lors de la saisi. et où mettre tout ce codes ? dans le Controller ? dans les Postscontroller ? ou sur admin_edit parlant de l’administrateur ?.
Merci bien pour votre aide.

Lartak, il y a 10 ans

Bonjour.
Ce que tu voudrais c'est que le slug soit généré avant que les données du formulaire soit envoyées, dans ce cas là il te faut le faire via javascript.
Par contre, je n'en vois pas vraiment l'intérêt si le slug se retrouve dans un input qui sera de type hidden.
Autant laisser le formulaire être soumis et faire le traitement du slug juste avant que les données soit envoyé en base de données pour la sauvegarde.
Si encore il restait visible pour par exemple que l'utilisateur voit comment sera le slug au final avant qu'il ne soumette le formulaire, ça aurait une utilité, mais si c'est pour générer le slug dans un champ caché, c'est totalement inutile vu qu'il faudra que tu traites les données de ton formulaire après qu'il aura été soumis, ce sera un double travail pour rien.

Mn0073RF, il y a 10 ans

C'est parfait j'ai opté pour ta proposition, de faire le traitement du slug juste avant que les données soient envoyé en base de données. merci bien c'est génial .