Einführung
Laravel Prompts ist ein PHP-Paket, mit dem Sie Ihren Kommandozeilen-Anwendungen schöne, benutzerfreundliche interaktive Formulare hinzufügen. Es bietet mit Platzhaltertexten und Validierung ein Erlebnis, das dem eines Browser-Formulars nahekommt. Da Sie die Funktionen direkt im Code eines Artisan-Kommandos aufrufen, formulieren Sie Rückfragen an die Benutzer einfach und intuitiv.Laravel Prompts unterstützt macOS, Linux und Windows (WSL).
In nicht unterstützten Umgebungen greift automatisch ein Fallback.
Installation
Laravel Prompts ist Teil des Laravel-Kerns, eine zusätzliche Installation ist also nicht nötig. In anderen PHP-Projekten installieren Sie es per Composer.Grundlegende Prompt-Funktionen
text – Texteingabe
Mittext() fordern Sie eine Texteingabe an.
required machen Sie die Eingabe verpflichtend – die Fehlermeldung ist anpassbar.
validate-Closure können Sie zusätzlich validieren. Geben Sie eine Fehlermeldung zurück oder null bei Erfolg.
textarea – mehrzeilige Eingabe
Mittextarea() erlauben Sie mehrzeilige Eingaben.
number – Zahleingabe
Mitnumber() fragen Sie Zahlen ab. Über die Pfeiltasten kann der Wert erhöht bzw. verringert werden.
password – Passwort-Eingabe
password() funktioniert wie eine Texteingabe, das Eingegebene wird jedoch nicht angezeigt.
confirm – Ja/Nein
Mitconfirm() erhalten Sie eine binäre Bestätigung. Rückgabewert: true oder false.
select – Auswahlliste
Mitselect() wählt der Benutzer aus einer Liste einen Eintrag.
scroll legen Sie fest, wie viele Optionen vor dem Scrollen angezeigt werden (Standard: 5).
multiselect – Mehrfachauswahl
Mitmultiselect() können mehrere Optionen gleichzeitig ausgewählt werden.
required machen Sie mindestens eine Auswahl zur Pflicht.
suggest – Eingabe mit Autocomplete
suggest() bietet Vorschläge, erlaubt aber auch freie Eingaben.
search – dynamische Suche
search() aktualisiert die Vorschläge bei jeder Eingabe. Das von der Closure zurückgegebene Array bildet die Optionen.
multisearch – dynamische Mehrfachauswahl
multisearch() erlaubt Mehrfachauswahl mit dynamischer Suche.
pause – Pause
Mitpause() fordern Sie den Benutzer auf, Enter zu drücken, und halten den Ablauf an.
autocomplete – Inline-Vervollständigung
autocomplete() zeigt Vorschläge als Ghost-Text inline an. Anders als bei suggest() erscheinen passende Vorschläge während der Eingabe als Ghost-Text und können mit Tab oder der Pfeil-rechts-Taste übernommen werden.
Validierung
Bei allen Prompt-Funktionen können Sie über das Argumentvalidate eine Validierung hinterlegen.
null gilt die Validierung als erfolgreich.
Auch Laravel-Validierungsregeln lassen sich als Array angeben.
transform.
Formulare
Mitform() fassen Sie mehrere Prompts zusammen und können den gesamten Ablauf vor dem Abschluss abbrechen.
Informationsausgaben
Für stilisierte Textausgaben gibt es eigene Funktionen.Callouts
callout() zeigt Label und Inhalt in einem Rahmen an. Ideal, um Deploy-Zusammenfassungen, Fehlerdetails oder Statusaktualisierungen hervorzuheben.
type auf 'warning' oder 'error', um den visuellen Stil zu ändern.
info fügen Sie eine Fußzeile hinzu – praktisch für IDs oder Zeitstempel.
Reichhaltiger Inhalt
Übergeben Sie statt eines Strings ein Array, entsteht ein strukturiertes Callout. Die KlasseElement liefert Factory-Methoden für Überschriften, Aufzählungen, nummerierte Listen, Key-Value-Listen und Links.
Element::keyValueList zeigen Sie beschriftete Datenpaare an.
Element::link erzeugt in Terminals mit OSC-8-Unterstützung klickbare Hyperlinks. Übergeben Sie nur die URL oder URL und Label.
Tabellen anzeigen
Mittable() zeigen Sie Daten in Tabellenform an.
Spinner (Ladeanzeige)
spin() zeigt während der Ausführung einer Closure eine Ladeanzeige an.
Fortschrittsbalken
Mitprogress() visualisieren Sie den Fortschritt einer Iteration.
Tasks
task() zeigt während der Callback-Ausführung einen Spinner sowie einen scrollbaren Live-Log-Bereich an. Ideal, um langlaufende Vorgänge wie das Installieren von Abhängigkeiten oder Deploy-Skripte einzurahmen und in Echtzeit zu verfolgen.
Logger-Instanz, mit der Sie Logzeilen und Statusmeldungen in Echtzeit ausgeben.
Logzeilen ausgeben
Mitline schreiben Sie einzelne Zeilen in den scrollbaren Log-Bereich.
Statusmeldungen
Mitsuccess, warning und error fixieren Sie hervorgehobene Meldungen oberhalb des Log-Bereichs.
Label aktualisieren
Mitlabel ändern Sie das Task-Label während der Ausführung. subLabel setzt eine untergeordnete, dezent dargestellte Beschriftung. Ein leerer String entfernt die Sub-Label; über das Argument subLabel legen Sie ein Start-Sub-Label fest.
Text streamen
Für Vorgänge, die – wie KI-Antworten – Text schrittweise erzeugen, streamen Sie mitpartial Stück für Stück. Nach Abschluss rufen Sie commitPartial, um zu committen.
Zeilenlimit und Zusammenfassung
Standardmäßig werden bis zu 10 Zeilen scrollbar angezeigt. Über das Argumentlimit passen Sie das an. Sollen Statusmeldungen nach Abschluss auf dem Bildschirm bleiben, setzen Sie keepSummary: true.
Streams
stream() gibt Text schrittweise im Terminal aus – ideal für KI-generierte Inhalte oder chunkweise eintreffende Daten.
append fügt Text mit einem Fade-in-Effekt in den Stream ein. Nach dem vollständigen Streamen bestätigen Sie mit close, wodurch die Ausgabe committet und der Cursor wiederhergestellt wird.
Terminal-Steuerung
Terminal-Titel setzen
Terminal leeren
Hinweise zum Terminal
Terminalbreite: Überschreiten Label, Optionen oder Validierungsmeldungen die Spaltenzahl des Terminals, werden sie automatisch gekürzt. Rechnen Sie für ein 80-spaltiges Terminal mit etwa 74 Zeichen. Terminalhöhe: Bei Prompts, die das Argumentscroll akzeptieren, wird der Wert automatisch so angepasst, dass Validierungsmeldungen ebenfalls in die Terminalhöhe passen.
Fallback
In nicht unterstützten Umgebungen (z. B. Windows ohne WSL) schaltet Prompts automatisch auf Fallback. Standardmäßig werden dann die integrierten Methoden von Laravel wie$this->ask() oder $this->choice() verwendet.
Tests
Laravel Prompts arbeitet mit Pest und PHPUnit zusammen.Verwandte Seiten
Artisan-Konsole
Prompts innerhalb von Artisan-Kommandos einsetzen