Prompts interactivos en Laravel: guía sobre PromptsForMissingInput

  • Publicado el 18 diciembre, 2024
  • Palabras: 57

¿Quieres que tus comandos Artisan sean más fáciles de usar? ¡La interfaz PromptsForMissingInput de Laravel convierte los argumentos que faltan en indicaciones interactivas! Exploremos esta elegante función.

Prompts interactivos en Laravel: guía sobre PromptsForMissingInput

#Implementación básica

A continuación te indicamos cómo agregar indicaciones interactivas a tu comando:

 

use IlluminateConsoleCommand;
use IlluminateContractsConsolePromptsForMissingInput;

class SendEmails extends Command implements PromptsForMissingInput
{
    protected $signature = 'mail:send {user}';
}

 

#Personalización de Prompts

Puedes personalizar los mensajes de aviso:

 

protected function promptForMissingArgumentsUsing(): array
{
    return [
        'user' => '¿Qué ID de usuario debe recibir el correo?'
    ];
}

 

#Ejemplo práctico

A continuación se muestra una implementación práctica para un comando de despligue:

 

class DeployApplication extends Command implements PromptsForMissingInput
{
    protected $signature = 'deploy 
        {environment} 
        {branch} 
        {--notify=}';

    protected function promptForMissingArgumentsUsing(): array
    {
        return [
            'environment' => [
                'Which environment are you deploying to?',
                'E.g. staging, production'
            ],
            'branch' => fn () => search(
                label: 'Select a branch to deploy:',
                placeholder: 'Type to search branches...',
                options: fn ($value) => $this->getGitBranches($value)
            )
        ];
    }

    private function getGitBranches($search)
    {
        // Simulate Git branch search
        $branches = [
            'main' => 'main',
            'develop' => 'develop',
            'feature/user-auth' => 'feature/user-auth',
            'hotfix/login-fix' => 'hotfix/login-fix'
        ];

        return array_filter($branches, function($branch) use ($search) {
            return str_contains($branch, $search);
        });
    }

    public function handle()
    {
        $environment = $this->argument('environment');
        $branch = $this->argument('branch');

        $this->info("Deploying {$branch} to {$environment}...");

        // Deployment logic here...
    }
}

 

Escenarios de uso:

 

# Con todos los argumentos
php artisan deploy production main

# Sin argumentos (se mostrarán indicaciones)
php artisan deploy

 

Las indicaciones interactivas hacen que sus comandos sean más fáciles de usar y ayudan a evitar errores por falta de argumentos.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión