Inleiding
Laravel Prompts is een PHP-pakket voor het toevoegen van mooie, gebruiksvriendelijke interactieve formulieren aan commandline-applicaties. Het biedt een ervaring die dicht bij browserformulieren ligt, met placeholdertekst en validatie. Omdat je het rechtstreeks in de code van je Artisan-commando’s kunt aanroepen, schrijf je vragen aan de gebruiker eenvoudig en intuïtief.Laravel Prompts ondersteunt macOS, Linux en Windows (WSL).
In niet-ondersteunde omgevingen wordt automatisch overgeschakeld naar fallbackgedrag.
Installatie
Laravel Prompts wordt met Laravel zelf meegeleverd; extra installatie is niet nodig. Wil je het in een ander PHP-project gebruiken, dan installeer je het met Composer.Basale promptfuncties
text — tekstinvoer
Mettext() vraag je de gebruiker om een string in te voeren.
required maak je de invoer verplicht. Ook het validatiebericht is aanpasbaar.
validate-closure voer je extra validatie uit. De closure geeft een foutmelding terug, of null bij succes.
textarea — meerregelige tekstinvoer
Mettextarea() accepteer je invoer over meerdere regels.
number — numerieke invoer
Metnumber() accepteer je een getal. Met de pijltjestoetsen omhoog/omlaag kun je de waarde verhogen of verlagen.
password — wachtwoordinvoer
password() werkt zoals tekstinvoer, maar de ingevoerde tekst wordt niet op het scherm getoond.
confirm — ja/nee-bevestiging
Metconfirm() vraag je de gebruiker om een keuze uit twee opties. Het geeft true of false terug.
select — keuzelijst
Metselect() laat je de gebruiker één optie uit een lijst kiezen.
scroll wijzig je hoeveel opties er zichtbaar zijn voordat er gescrold wordt (standaard 5).
multiselect — meervoudige selectie
Metmultiselect() laat je meerdere opties tegelijk kiezen.
required maak je het kiezen van minstens één optie verplicht.
suggest — invoer met autocomplete
suggest() toont suggesties maar accepteert ook vrije invoer.
search — dynamisch zoeken
search() werkt de lijst met suggesties bij bij elke toetsaanslag. De array die de closure teruggeeft vormt de suggesties.
multisearch — dynamisch zoeken met meervoudige selectie
Metmultisearch() kun je via dynamisch zoeken meerdere opties selecteren.
pause — pauzeren
Metpause() pauzeer je de verwerking totdat de gebruiker op Enter drukt.
autocomplete — inline aanvullen
autocomplete() is een functie voor inline aanvullen die suggesties als ghost text toont. Anders dan bij suggest() verschijnt bij elke toetsaanslag de best passende suggestie als ghost text, en met de Tab-toets of de pijl naar rechts bevestig je de aanvulling.
Validatie
Alle promptfuncties ondersteunen validatie via hetvalidate-argument.
null terug, dan is de validatie geslaagd.
Je kunt ook Laravel-validatieregels in arrayvorm gebruiken.
transform-argument om de invoer vóór de validatie te transformeren.
Formulieren
Metform() bundel je meerdere prompts en kun je vóór voltooiing in één keer annuleren.
Informatie-uitvoer
Er zijn functies om tekstberichten met opmaak uit te voeren.Callouts
callout() toont een label en inhoud omkaderd. Ideaal om belangrijke informatie te laten opvallen, zoals deploysamenvattingen, foutdetails en statusupdates.
type-argument 'warning' of 'error' op, dan verandert de visuele stijl.
info-argument voeg je een voettekstregel toe. Handig om metadata zoals ID’s en timestamps te tonen.
Rijke inhoud
Geef je in plaats van een string een array door, dan maak je een gestructureerde, rijke callout. DeElement-klasse heeft factorymethodes voor koppen, opsommingslijsten, genummerde lijsten, sleutel-waardelijsten en links.
Element::keyValueList toon je gelabelde data.
Element::link genereert klikbare hyperlinks in terminals die OSC 8 ondersteunen. Je kunt alleen een URL doorgeven, of een URL met een eigen label.
Tabellen tonen
Mettable() toon je data in tabelvorm.
Spin (laadindicator)
spin() toont een laadindicator terwijl de closure wordt uitgevoerd.
Voortgangsbalken
Metprogress() toon je visueel de voortgang van een herhaalde bewerking.
Taken
task() toont tijdens het uitvoeren van de callback een spinner en een scrolbaar live-uitvoergebied. Ideaal om langlopende processen te wrappen, zoals het installeren van dependencies of deployscripts, zodat je in realtime ziet wat er gebeurt.
Logger-instantie waarmee je logregels en statusberichten in realtime kunt tonen.
Logregels uitvoeren
Met deline-methode schrijf je regel voor regel logs naar het scrollende uitvoergebied.
Statusberichten
Metsuccess, warning en error toon je gemarkeerde berichten die vast bovenaan het scrollende loggebied staan.
Het label bijwerken
Met delabel-methode werk je het label van de taak tijdens de uitvoering bij. De subLabel-methode stelt een sublabel in dat gedimd onder het label wordt getoond. Geef je een lege string door, dan wordt het sublabel gewist. Met het subLabel-argument kun je ook een initieel sublabel opgeven.
Tekst streamen
Bij verwerkingen waarbij de uitvoer stapsgewijs ontstaat, zoals door AI gegenereerde responses, kun je met departial-methode tekst stukje voor stukje streamen. Is de stream klaar, dan roep je commitPartial aan om te bevestigen.
Uitvoerlimiet en de samenvatting behouden
Standaard worden maximaal 10 regels scrollende uitvoer getoond. Dit pas je aan met hetlimit-argument. Wil je de statusberichten na afloop van de taak op het scherm laten staan, geef dan keepSummary: true door.
Streams
stream() toont tekst stapsgewijs in de terminal. Ideaal voor het tonen van door AI gegenereerde inhoud of data die in chunks binnenkomt.
append-methode voegt tekst met een fade-in-effect aan de stream toe. Heb je alle inhoud gestreamd, roep dan close aan om de uitvoer te bevestigen en de cursor te herstellen.
Terminalbewerkingen
De terminaltitel instellen
De terminal wissen
Aandachtspunten voor de terminal
Terminalbreedte: als labels, opties of validatieberichten breder zijn dan het aantal kolommen van de terminal, worden ze automatisch afgekapt. Ga je uit van een terminal van 80 kolommen, houd dan maximaal 74 tekens aan als richtlijn. Terminalhoogte: bij prompts die hetscroll-argument accepteren, wordt de waarde automatisch aangepast zodat alles — inclusief ruimte voor validatieberichten — binnen de hoogte van de terminal past.
Fallback
In niet-ondersteunde omgevingen (zoals Windows zonder WSL) wordt automatisch teruggevallen. Standaard worden dan de ingebouwde methodes van Laravel gebruikt, zoals$this->ask() en $this->choice().
Testen
Laravel Prompts werkt samen met Pest- en PHPUnit-tests.Gerelateerde pagina’s
Artisan-console
Gebruik Prompts binnen Artisan-commando’s