Aller au contenu

Points d'extension

phil/slug-bundle

Ce qu'une application configure, décore ou utilise. Les types sont ceux de phil/slug.

Configuration

OptionCe qu'elle étend
sluggersUn générateur par nom, chacun avec sa locale, sa max_length et ses leading_words — voyez Configuration
defaultQuel générateur nommé est Phil\Slug\Slugger
historyL'historique des anciens slugs, sa connexion et son horloge — voyez Historique des anciens slugs

Services

ServiceComment une application l'utilise
phil_slug.slugger.<name>Décoré par l'application, avec #[AsDecorator] ou decorates: : le décorateur prend la place du générateur dans Sluggers, par les alias et dans Twig — voyez Services
Phil\Slug\SluggerAutoconnecté : le générateur par défaut
Phil\Slug\Slugger $<name>SluggerAutoconnecté par nom d'argument : le générateur de ce nom
Phil\Slug\SluggersInjecté partout où le générateur est choisi à l'exécution ; public
Phil\SlugBundle\Application\Contract\SlugHistoryAutoconnecté quand l'historique est activé : enregistré par le code qui change un slug, lu par un fournisseur de redirections ou un contrôleur
phil_slug.historyL'historique Doctrine ; une application le remplace en faisant pointer l'alias SlugHistory vers sa propre implémentation

Un bundle qui prend un générateur par identifiant de service reçoit phil_slug.slugger.<name>.

SlugHistory

Une implémentation autre que celle de Doctrine garde les invariants du contrat :

  • une portée et un sujet sont vérifiés avec SlugHistoryKeys avant que rien ne soit écrit ou lu ;
  • enregistrer un changement fait cesser le nouveau slug d'être un ancien slug de la portée, quel que soit le sujet qui l'avait, fait pointer chaque ancien slug du sujet vers le nouveau slug, et écrit l'ancien slug comme ancien slug du sujet, d'un seul coup ;
  • enregistrer un slug comme son propre ancien slug ne change rien ;
  • formerSlugs() ne donne jamais de chaîne : chaque valeur est un slug actuel ;
  • elle ne garde rien entre deux appels, ou porte l'étiquette kernel.reset.

Twig

Le filtre phil_slug prend le nom d'un générateur ; il utilise les mêmes services, décorateurs compris.