Die {--order}
Option ausgeführt werden (ohne =
Zeichen) deklariert eine Schalter Option, die keine Argumente nimmt. Wenn die Switch-Option vorhanden ist, ist der Wert gleich true
und, wenn nicht vorhanden, false
(--help
ist wie ein Schalter — kein Argument erforderlich).
Wenn wir für diese Option ein Argument in der Befehlszeile angeben, kann das Konsolenframework die Eingabe für eine Option nicht mit einem Argument vergleichen. Daher wird der Fehler wie in der Frage angezeigt.
die Option zu ermöglichen, um ein Argument zu akzeptieren, den $signature
auf Befehl ändern:
protected $signature = 'order:check {--order=}'
Hinweis die Zugabe des Gleichheitszeichens nach --order
. Dies teilt dem Framework mit, dass die --order
Option erfordert ein Argument — der Befehl wird eine Ausnahme auslösen, wenn der Benutzer einen nicht bereitstellt.
Wenn wir unser Befehl wollen eine Option mit oder ohne ein Argument akzeptieren, können wir eine ähnliche Syntax verwenden, um einen Standardwert zur Verfügung zu stellen:
protected $signature = 'order:check {--order=7}'
... aber dies scheint nicht sinnvoll für diesen speziellen Fall.
Nachdem wir dies eingerichtet haben, können wir den Befehl aufrufen und ein Argument für --order
übergeben. Das Framework unterstützt beide Formate:
$ php artisan order:check --order=7
$ php artisan order:check --order 7
... und dann den Wert von order
in unserem Befehl:
$orderNumber = $this->argument('order'); // 7
Try '--order = X '. Es kann die 7 als ein separates Argument anstelle eines Optionswerts analysieren. – aynber
@aynber noch muss er der Definition des Befehls das Gleichheitszeichen hinzufügen, wie Cy wies darauf hin – teeyo
@Michael las den Abschnitt: ** Optionen mit Werten ** https://laravel.com/docs/5.5/artisan – teeyo