nunomaduro/laravel-console-menu

Laravel Console Menu is an output method for your Laravel/Laravel Zero commands.

Maintainers

👁 nunomaduro

Package info

github.com/nunomaduro/laravel-console-menu

pkg:composer/nunomaduro/laravel-console-menu

Statistics

Installs: 428 194

Dependents: 46

Suggesters: 0

Stars: 812

Open Issues: 5

v3.7.0 2026-02-27 09:31 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT d592e66afb32a6f6e8577d867514e0e8932a8e7f

  • Nuno Maduro <enunomaduro.woop@gmail.com>

symfonyphpcliconsolecommand-linelaravelartisanlaravel-zero

This package is auto-updated.

Last update: 2026-05-22 04:48:25 UTC


README

👁 Image

👁 Static Analysis
👁 Latest Stable Version
👁 License
👁 YouTube Channel Subscribers

About Laravel Console Menu

Laravel Console Menu was created by, and is maintained by Nuno Maduro, and is a php-school/cli-menu wrapper for Laravel Console Commands.

Installation

Requires PHP 8.1+

Require Laravel Console Menu using Composer:

composer require nunomaduro/laravel-console-menu

Usage

Quick Setup

class MenuCommand extends Command
{
 /**
 * Execute the console command.
 *
 * @return void
 */
 public function handle()
 {
 $option = $this->menu('Pizza menu', [
 'Freshly baked muffins',
 'Freshly baked croissants',
 'Turnovers, crumb cake, cinnamon buns, scones',
 ])->open();

 $this->info("You have chosen the option number #$option");
 }
}

Setup with a question

👁 Image

class MenuCommand extends Command
{
 /**
 * Execute the console command.
 *
 * @return void
 */
 public function handle()
 {
 $option = $this->menu('Pizza menu')
 ->addOption('mozzarella', 'Mozzarella')
 ->addOption('chicken_parm', 'Chicken Parm')
 ->addOption('sausage', 'Sausage')
 ->addQuestion('Make your own', 'Describe your pizza...')
 ->addOption('burger', 'Prefer burgers')
 ->setWidth(80)
 ->open();
 
 $this->info("You have chosen the text option: $option");
 }
}

Setup with advanced option, in this case, a password

👁 Image

class MenuCommand extends Command
{
 /**
 * Execute the console command.
 *
 * @return void
 */
 public function handle()
 {
 $menu = $this->menu('Pizza menu')
 ->addOption('mozzarella', 'Mozzarella')
 ->addOption('chicken_parm', 'Chicken Parm')
 ->addOption('sausage', 'Sausage')
 ->addQuestion('Make your own', 'Describe your pizza...');
 
 $itemCallable = function (CliMenu $cliMenu) use ($menu) {
 $cliMenu->askPassword()
 ->setValidator(function ($password) {
 return $password === 'secret';
 })
 ->setPromptText('Secret password?')
 ->ask();

 $menu->setResult('Free spice!');

 $cliMenu->close();
 };
 $menu->addItem('Add extra spice for free (password needed)', $itemCallable);


 $option = $menu->addOption('burger', 'Prefer burgers')
 ->setWidth(80)
 ->open();

 $this->info("You have chosen the text option: $option");
 }
}

Appearance

Available colors: black, red, green, yellow, blue, magenta, cyan, white.

 $this->menu($title, $options)
 ->setForegroundColour('green')
 ->setBackgroundColour('black')
 ->setWidth(200)
 ->setPadding(10)
 ->setMargin(5)
 ->setExitButtonText("Abort") // remove exit button with ->disableDefaultItems()
 ->setTitleSeparator('*-')
 ->addLineBreak('<3', 2)
 ->addStaticItem('AREA 2')
 ->open();

Check out the full documentation here.

Contributing

Thank you for considering to contribute to Laravel Console Menu. All the contribution guidelines are mentioned here.

You can have a look at the GitHub Releases for constant updates & detailed information about the changes. You can also follow the twitter account for latest announcements or just come say hi!: @enunomaduro

Support the development

Do you like this project? Support it by donating

License

Laravel Console Menu is an open-sourced software licensed under the MIT license.