New in Symfony 5.4: Console Autocompletion

Symfony 5.4 and Symfony 6.0 will be released simultaneously at the end of November 2021. According to the Symfony release process, both versions will have the same features, but Symfony 6.0 won't include any deprecated features. This is the first article of the series that shows the most important new features introduced by Symfony 5.4 and 6.0 versions.

        Contributed by Wouter De Jong
         in #42251.

Symfony Console is one of the favorite Symfony Components and the most downloaded one if we exclude the Polyfill components (368 million downloads as of October 2021). It's packed with features and it has become the standard way of creating CLI applications in PHP. In Symfony 5.4 we've improved the Console component with the most important and most requested missing feature: autocompletion. When running a Symfony command you can now press the TAB key to see a list of contextual suggestions. In the following GIF, you can see how pressing the TAB key first shows the list of commands available. After typing secrets:remove, when you press TAB again it autocompletes the argument value with one of the valid secret names of the application:

Autocompletion not only will boost your productivity, but it will also prevent many typos and issues when passing options and arguments to commands. This feature works for Bash shell, but we intend to support other shells such as Zsh and Fish in the near future. Also, this is not limited to Symfony applications. The following GIF shows the autocompletion of options and arguments in a Laravel command:

Technically, autocompletion is enabled when your command class defines a complete() method. Inside this method you need to generate the appropriate suggestions for each input. For example, if your command defines an argument called format which only allows passing json and xml as its values, add this:

    1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Completion\CompletionInput; use Symfony\Component\Console\Completion\CompletionSuggestions;

class SomeCommand extends Command { // ...

public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
{
    if ($input->mustSuggestOptionValuesFor('format')) {
        $suggestions->suggestValues(['json', 'xml']);
    }
}

}

Usually, the suggestions will be dynamic, so you'll need to call some other methods and services to generate those values instead of passing an array of values to suggestValues(). During these past weeks, the Symfony community has worked on a colossal joint effort to add autocompletion for all internal Symfony commands. Here's the list of commands updated so far: help and list commands (PR 43596) debug:firewall, debug:form, debug:messenger, debug:router (PR 43598) cache:pool:clear, cache:pool:delete (PR 43621) secrets:set, secrets:remove (PR 43626) ulid:generate, uuid:generate (PR 43639) messenger:setup-transports (PR 43640) debug:translation (PR 43644) security:hash-password (PR 43653) translation:pull, translation:push (PR 43672) translation:update (PR 43676) lint:twig, lint:xliff, lint:yaml (PR 43680) config:dump-reference (PR 43682) server:dump (PR 43683) debug:twig (PR 43846)

                Sponsor the Symfony project.

http://feedproxy.google.com/~r/symfony/blog/~3/KwjmS_ZQirk/new-in-symfony-5-4-console-autocompletion

Creată 4y | 2 nov. 2021, 10:20:08


Autentifică-te pentru a adăuga comentarii

Alte posturi din acest grup

A Week of Symfony #967 (July 7–13, 2025)

This week, Symfony unveiled the Symfony AI initiative, a set of components and bundles designed to bring powerful AI capabilities directly into your PHP applications. In addition, we published travel

13 iul. 2025, 09:20:11 | Symfony
Kicking off the Symfony AI Initiative

Today we are happy to announce a new Symfony initiative called Symfony AI - with the goal to provide a comprehensive set of components and bundles designed to bring powerful AI capabilities directly i

11 iul. 2025, 13:20:27 | Symfony
SymfonyCon Amsterdam 2025: Travel & Lodging Tips

SymfonyCon Amsterdam 2025, our next annual international Symfony conference, will take place on:

November 25 & 26: 2 workshops days with several topics to learn, practice and improve your skills

11 iul. 2025, 08:40:20 | Symfony
A Week of Symfony #966 (June 30 – July 6, 2025)

This week, development on the upcoming Symfony 8.0 version continued with the removal of deprecated features and the marking of several classes as final. In addition, we published two new case studies

6 iul. 2025, 08:10:15 | Symfony
Case study: Modernizing Audi France’s Digital Ecosystem with Symfony 6

At Wide, Micropole’s digital agency, they help leading brands modernize their digital infrastructures while ensuring scalability, security, and performance. When Audi France approached them to migrate

4 iul. 2025, 09:40:14 | Symfony
Case study: A Long-Term Powerhouse Behind Vente-unique.com's E-Commerce Success (Zero Churn, All Wins!)

Vente-unique.com, a leading European online retailer of furniture and home decor, operates in 11 countries, powered by a team of 400 professionals and serving more than 3 million customers. From 15 ye

2 iul. 2025, 09:10:03 | Symfony
A Week of Symfony #965 (June 23–29, 2025)

This week, Symfony 6.4.23, 7.2.8 and 7.3.1 maintenance versions were released. Meanwhile, the upcoming Symfony 7.4 version continued adding new features such as better controller helpers, more precisi

29 iun. 2025, 09:10:15 | Symfony