Introduction
Laravel Prompts est un package PHP qui ajoute des formulaires interactifs élégants aux applications CLI. Placeholders, validation… une expérience proche des formulaires web. Utilisable directement dans les commandes Artisan pour interroger l’utilisateur.Supporte macOS, Linux et Windows (WSL). Bascule sur un fallback dans les autres environnements.
Installation
Laravel Prompts est livré avec Laravel — rien à installer. Pour un autre projet PHP :Prompts de base
text — saisie texte
null → OK).
textarea
number
Flèches haut/bas pour ajuster.
password
Comme text, masqué.
confirm — Oui/Non
select
scroll (5 par défaut).
multiselect
suggest
Suggestions + saisie libre.
search — recherche dynamique
multisearch
pause
autocomplete — Complétion inline
autocomplete propose un texte fantôme, validable avec Tab ou flèche droite.
Validation
Chaque prompt acceptevalidate.
null = succès.
Règles Laravel :
transform.
Formulaires
form() regroupe des prompts et permet un cancel commun.
Sortie informative
Callouts
callout() encadre un contenu avec un label. Idéal pour un résumé de déploiement, une erreur, un statut.
type: 'warning' ou 'error' pour changer le style.
info ajoute un pied de contenu (ID, timestamp…).
Contenu riche
Passez un tableau.Element fournit heading, listes, key/value, liens…
keyValueList :
Element::link produit un lien cliquable dans les terminaux qui supportent OSC 8.
Tables
Spin (loader)
Affiche un indicateur pendant l’exécution d’une closure.Barres de progression
Task
task() combine spinner et zone de logs scrollable, utile pour installations, déploiements, etc.
Logger.
Lignes de log
Statuts
success, warning, error affichent des messages épinglés au-dessus.
Mise à jour de label
label change la ligne principale, subLabel un sous-titre. subLabel('') l’efface. subLabel: initial via argument.
Streaming
Pour les sorties incrémentales (IA…),partial puis commitPartial.
Limite et résumé
Par défaut 10 lignes visibles. Personnalisez vialimit. Pour conserver les messages de statut après la fin, keepSummary: true.
Streams
stream() affiche du texte progressivement, avec effet fade-in.
append ajoute avec effet ; close finalise et restaure le curseur.
Terminal
Titre
Nettoyer l’écran
Considérations
Largeur : au-delà de la largeur du terminal, tout est tronqué. Pour 80 colonnes, ~74 caractères max. Hauteur : les prompts acceptantscroll s’auto-ajustent selon la hauteur (marge pour la validation).
Fallback
Sur les environnements non supportés (Windows non WSL…), Prompts bascule automatiquement — typiquement sur$this->ask(), $this->choice(), etc.
Tests
Compatible Pest et PHPUnit.Pages associées
Console Artisan
Utilisez Prompts dans vos commandes Artisan.