Laravel 命令 - 只有可选参数
Laravel command - Only optional argument
我有一个带有此签名的命令
order:check {--order}
并执行:
php artisan order:check --order 7
由于某种原因导致此异常
[RuntimeException]
Too many arguments, expected arguments "command".
为什么?我希望此命令可以作为 php artisan order:check
或使用可选订单 ID php artisan order:check --order X
执行
{--order}
选项(没有 =
符号)声明了一个 switch 选项,它采用 无参数.如果存在 switch 选项,其值等于 true
,如果不存在,则为 false
(--help
就像一个开关——不需要参数)。
当我们在命令行上为此选项提供参数时,控制台框架无法将输入与参数匹配,因此它会抛出问题中所示的错误。
要允许选项接受参数,请将命令的 $signature
更改为:
protected $signature = 'order:check {--order=}'
注意在--order
之后添加等号。这告诉框架 --order
选项 需要 一个参数——如果用户不提供参数,命令将抛出异常。
如果我们希望我们的命令接受一个选项有或没有参数,我们可以使用类似的语法来提供默认值:
protected $signature = 'order:check {--order=7}'
...但这对于这种特殊情况似乎没有用。
设置好之后,我们可以调用命令,为 --order
传递一个参数。该框架支持两种格式:
$ php artisan order:check --order=7
$ php artisan order:check --order 7
...然后在我们的命令中使用 order
的值:
$orderNumber = $this->option('order'); // 7
我有一个带有此签名的命令
order:check {--order}
并执行:
php artisan order:check --order 7
由于某种原因导致此异常
[RuntimeException]
Too many arguments, expected arguments "command".
为什么?我希望此命令可以作为 php artisan order:check
或使用可选订单 ID php artisan order:check --order X
{--order}
选项(没有 =
符号)声明了一个 switch 选项,它采用 无参数.如果存在 switch 选项,其值等于 true
,如果不存在,则为 false
(--help
就像一个开关——不需要参数)。
当我们在命令行上为此选项提供参数时,控制台框架无法将输入与参数匹配,因此它会抛出问题中所示的错误。
要允许选项接受参数,请将命令的 $signature
更改为:
protected $signature = 'order:check {--order=}'
注意在--order
之后添加等号。这告诉框架 --order
选项 需要 一个参数——如果用户不提供参数,命令将抛出异常。
如果我们希望我们的命令接受一个选项有或没有参数,我们可以使用类似的语法来提供默认值:
protected $signature = 'order:check {--order=7}'
...但这对于这种特殊情况似乎没有用。
设置好之后,我们可以调用命令,为 --order
传递一个参数。该框架支持两种格式:
$ php artisan order:check --order=7
$ php artisan order:check --order 7
...然后在我们的命令中使用 order
的值:
$orderNumber = $this->option('order'); // 7