Skip to main content

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

Placeholder, valeur par défaut, aide :
Rendez la saisie obligatoire.
Validation via closure (retourner un message → erreur, null → OK).
Ou règles Laravel :

textarea

number

Flèches haut/bas pour ajuster.

password

Comme text, masqué.

confirm — Oui/Non

select

Tableau associatif : la clé est retournée.
Ajustez scroll (5 par défaut).

multiselect

Obligatoire :

suggest

Suggestions + saisie libre.
Dynamique :

search — recherche dynamique

multisearch

pause

autocomplete — Complétion inline

autocomplete propose un texte fantôme, validable avec Tab ou flèche droite.
Options complètes :
Closure dynamique :

Validation

Chaque prompt accepte validate.
Retour chaîne = erreur, null = succès. Règles Laravel :
Transformez avant validation avec 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.
Sans label, l’URL sert de texte.

Tables

Spin (loader)

Affiche un indicateur pendant l’exécution d’une closure.
spin() nécessite l’extension pcntl. Sans, aucun spinner.

Barres de progression

Contrôle manuel :

Task

task() combine spinner et zone de logs scrollable, utile pour installations, déploiements, etc.
Le callback reçoit un Logger.
task() nécessite pcntl. Sans, fallback statique.

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 via limit. 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

Chaîne vide pour réinitialiser :

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 acceptant scroll 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.
Helpers Artisan pour les fonctions d’info :

Pages associées

Console Artisan

Utilisez Prompts dans vos commandes Artisan.
Dernière modification le 13 juillet 2026