2014-11-17 18 views
6

Sto creando un comando per generare account da un file. Al comando ho passato alcuni argomenti.Symfony 2: convalida argomenti di comando console

$this 
    ->setName('batch:create') 
    ->setDescription('xyz') 
    ->setHelp('xyz') 
    ->addArgument('account-id', InputArgument::REQUIRED, "Set the account id.") 
    ->addArgument('name', InputArgument::REQUIRED, "Set the account name."); 

Stavo solo pensando se c'è un modo per controllare il tipo di argomento passato. Per ora sto controllando in questo modo,

if (is_numeric($input->getArgument('account-id'))) { 
    // .... 
    } 

C'è qualche cosa che può creare un validatore che controlla il tipo e non mi resta che chiamare la funzione convalidare.

if ($input->validate() === false) { 
    // show error message and return. 
    } 
+0

Ho aggiornato la mia risposta con alcuni nuovi dettagli, sembra che ora abbiamo una soluzione migliore. – kix

risposta

9

Sfortunatamente, al momento non è possibile implementare la convalida degli argomenti del comando in Symfony. Il modo migliore per implementare questi controlli sarebbe quello di ignorare il metodo Symfony\Component\Console\Command::initialize nel comando e quindi applicare le regole di convalida in quel punto, generando eccezioni se gli argomenti passati non sono validi.

Aggiornamento: Matthias Noback ha implementato symfony-console-form (https://github.com/matthiasnoback/symfony-console-form), e si presenta come implementare l'interfaccia Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand darebbe capacità di convalida di base attraverso il componente di modulo (necessario testarlo con la convalida, però).

+0

Hai ragione. Penso che per ora devo mantenere il mio codice attuale così com'è. –

+0

Grazie per il collegamento. Ci proveremo. –

Problemi correlati