2013-01-18 7 views
5

Ich habe eine Task-Klasse mit der Methode, die mehrere Argumente benötigt:Wie übergeben Sie mehrere Argumente, wenn Sie Laravel-Tasks auf der Befehlszeile ausführen?

class Sample_Task 
{ 
    public function create($arg1, $arg2) { 
     // something here 
    } 
} 

Aber es scheint, dass Handwerker nur das erste Argument bekommt:

php artisan sample:create arg1 arg2 

Fehlermeldung:

Warning: Missing argument 2 for Sample_Task::create() 

Wie um mehrere Argumente in dieser Methode zu übergeben?

Antwort

6
class Sample_Task 
{ 
    public function create($args) { 
     $arg1 = $args[0]; 
     $arg2 = $args[1]; 
     // something here 
    } 
} 
+0

Vielen Dank! – did1k

1

Laravel 5,2

Was müssen Sie das Argument tun angeben (oder Option, zum Beispiel --option) in der $signature Eigenschaft als Array. Laravel zeigt dies mit einem Sternchen an.

Argument

z.B. Falls Sie also einen Artisan Befehl "Prozess" Bilder haben:

protected $signature = 'image:process {id*}'; 

Wenn Sie dann tun:

php artisan help image:process 

... Laravel die korrekte Unix-Syntax des Hinzufügens kümmern:

Usage: 
    image:process <id> (<id>)... 

Um auf die Liste zuzugreifen, verwenden Sie einfach die folgende Methode:

$arguments = $this->argument('id'); 

foreach($arguments as $arg) { 
    ... 
} 
stattdessen

Optionen

ich sagte es auch für Optionen gearbeitet, Sie {--id=*} in $signature verwenden.

Der Hilfetext zeigen:

Usage: 
    image:process [options] 

Options: 
     --id[=ID]   (multiple values allowed) 
    -h, --help   Display this help message 

    ... 

So würde der Benutzer eingeben:

$ids = $this->option('id'); 

:

php artisan image:process --id=1 --id=2 --id=3 

und die Daten in handle() zuzugreifen, würden Sie verwenden Wenn Sie 'id' weglassen, erhalten Sie alle Optionen, einschließlich booleans für 'ruhig', 'verbose' usw.

$options = $this->option(); 

können Sie die Liste der IDs Zugriff in $options['id']

Mehr Informationen im Laravel Artisan guide.