L'oggetto $this->output
è un'istanza di Symfony di Symfony\Component\Console\Style\SymfonyStyle
, che fornisce i metodi progressStart()
, progressAdvance()
e progressFinish()
.
Il metodo progressStart()
crea dinamicamente un'istanza di Symfony\Component\Console\Helper\ProgressBar
oggetto e lo aggiunge al vostro oggetto di uscita, in modo da poter manipolare usando progressAdvance()
e progressFinish()
.
Purtroppo, ragazzi Symfony ha deciso di mantenere sia $progressBar
proprietà e getProgressBar()
Metodo privato, quindi non è possibile accedere all'istanza ProgressBar reale direttamente tramite il vostro oggetto di output se è stato utilizzato progressStart()
per avviarlo.
createProgressBar() per il salvataggio!
Tuttavia, esiste un metodo non documentato chiamato createProgressBar($max)
che restituisce un oggetto ProgressBar nuovo di zecca lucido con cui si può giocare.
Così, appena si può fare:
$progress = this->output->createProgressBar(100);
E fare quello che vuoi con esso utilizzando la pagina Symfony's docs che hai fornito. Ad esempio:
$this->info("Creating progress bar...\n");
$progress = $this->output->createProgressBar(100);
$progress->setFormat("%message%\n %current%/%max% [%bar%] %percent:3s%%");
$progress->setMessage("100? I won't count all that!");
$progress->setProgress(60);
for ($i = 0;$i<40;$i++) {
sleep(1);
if ($i == 90) $progress->setMessage('almost there...');
$progress->advance();
}
$progress->finish();
Spero che sia d'aiuto. ;)
fonte
2015-08-14 21:21:00
Risposta perfetta! – Christopher
ottengo errore 'Chiama a metodo non definito UsersTableSeeder :: info()' e 'Proprietà indefinita: UsersTableSeeder :: $ output'. Cosa sto facendo male? – kuchar