2014-11-17 14 views
6

Bir dosyadan hesap oluşturmak için bir komut oluşturuyorum. Komutta bazı argümanları geçtim.Symfony 2: konsol comand argümanlarını doğrulayın

$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."); 

Aktarılan argüman türünü kontrol etmenin herhangi bir yolu olup olmadığını düşünüyorum. Şimdi ben, bunu böyle kontrol ediyorum için

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

orada zaten ben tipini kontrol eden bir doğrulayıcı oluşturabilir ve sadece işlevini doğrulamak aramak zorunda mı.

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

Cevabımı yeni ayrıntılarla güncelledim, şimdi daha iyi bir çözümümüz var gibi görünüyor. – kix

cevap

9

Maalesef, şu anda Symfony'de komut argüman doğrulamasını uygulama yolu yoktur. Bu denetimleri gerçekleştirmenin en iyi yolu, komutunuzda Symfony\Component\Console\Command::initialize yöntemini geçersiz kılar ve ardından geçerlilik kurallarını burada uygulayarak, bağımsız değişkenler geçersizse istisnalar atar.

Güncelleme: Matthias Noback symfony-console-form (https://github.com/matthiasnoback/symfony-console-form) uygulanan ve form bileşeni üzerinden size temel doğrulama yeteneklerini verecekti Matthias\SymfonyConsoleForm\Console\Command\FormBasedCommand arabirimini uygulayan gibi görünüyor etmiştir (gerçi, doğrulama ile test etmek gerekir).

+0

Haklısınız. Şimdilik, şu anki kodumu olduğu gibi tutmak zorundayım. –

+0

Bağlantı için teşekkürler. Bir deneyecek. –