- Trait :
AppoloDev\SFToolboxBundle\Maker\Command\InteractCommand - Fichier source :
src/Maker/Command/InteractCommand.php
Trait utilitaire factorisant la logique d'interaction console (questions/confirmations), utilisé par MakeDomainEntityCommand et MakeScaffoldCommand dans leur méthode interact(). Pas destiné à être utilisé en dehors de ces commandes Maker.
Pose une question à l'utilisateur en se basant sur la description de l'argument de console $argName (déclarée dans configure() via addArgument(..., description: ...)), puis assigne la réponse dans $input via setArgument().
protected function configure(): void
{
$this->addArgument('domain', InputArgument::OPTIONAL, 'Nom du domaine (ex: Catalog)');
}
public function interact(InputInterface $input, OutputInterface $output): void
{
$this->askQuestion('domain', $input, $output); // pose la question "Nom du domaine (ex: Catalog)"
}Pose une question de confirmation (oui/non, ConfirmationQuestion), avec un validateur qui lève une \InvalidArgumentException si la réponse n'est pas positive — pensé pour une boucle qui bloque tant que l'utilisateur ne confirme pas (voir l'usage dans MakeDomainEntityCommand::execute(), qui boucle tant que mapping n'est pas confirmé true).
use AppoloDev\SFToolboxBundle\Maker\Command\InteractCommand;
#[AsCommand(name: 'make:my-thing')]
class MakeMyThingCommand extends Command
{
use InteractCommand;
protected function configure(): void
{
$this->addArgument('name', InputArgument::OPTIONAL, 'Nom à donner');
}
public function interact(InputInterface $input, OutputInterface $output): void
{
$this->askQuestion('name', $input, $output);
}
}