我创建了一个Task类,它的方法需要多个参数:
class Sample_Task { public function create($arg1, $arg2) { // something here } }
但看起来工匠只得到了第一个论点:
php artisan sample:create arg1 arg2
错误信息:
Warning: Missing argument 2 for Sample_Task::create()
如何在这个方法中传递多个参数?
kr98yfug1#
您需要做的是在$signature属性中指定参数(或选项,例如--option)作为数组。Laravel用星号表示这一点。
$signature
例如,假设您有一个Artisan命令来"处理"图像:
protected $signature = 'image:process {id*}';
如果您这样做:
php artisan help image:process
... Laravel将负责添加正确的Unix风格语法:
Usage: image:process <id> (<id>)...
要在handle()方法中访问该列表,只需使用:
handle()
$arguments = $this->argument('id'); foreach($arguments as $arg) { ... }
我说它对选项也有效,你可以在$signature中使用{--id=*}。帮助文本将显示:
{--id=*}
Usage: image:process [options] Options: --id[=ID] (multiple values allowed) -h, --help Display this help message ...
因此,用户可以键入:
php artisan image:process --id=1 --id=2 --id=3
要访问handle()中的数据,可以使用:
$ids = $this->option('id');
如果省略'id',将得到 * all * 选项,包括'quiet'、'verbose'等的布尔值。
$options = $this->option();
您可以访问$options['id']中的ID列表更多信息请参见Laravel Artisan guide。
$options['id']
pieyvz9o2#
class Sample_Task { public function create($args) { $arg1 = $args[0]; $arg2 = $args[1]; // something here } }
2sbarzqh3#
也可以运行传递属性:
php artisan image:process {id=1} {id=2} {id=3}
3条答案
按热度按时间kr98yfug1#
您需要做的是在
$signature
属性中指定参数(或选项,例如--option)作为数组。Laravel用星号表示这一点。例如,假设您有一个Artisan命令来"处理"图像:
如果您这样做:
... Laravel将负责添加正确的Unix风格语法:
要在
handle()
方法中访问该列表,只需使用:我说它对选项也有效,你可以在
$signature
中使用{--id=*}
。帮助文本将显示:
因此,用户可以键入:
要访问
handle()
中的数据,可以使用:如果省略'id',将得到 * all * 选项,包括'quiet'、'verbose'等的布尔值。
您可以访问
$options['id']
中的ID列表更多信息请参见Laravel Artisan guide。
pieyvz9o2#
2sbarzqh3#
也可以运行传递属性: