11

複数の引数を必要とするメソッドを使用して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()

このメソッドで複数の引数を渡す方法は?

4

2 に答える 2

14

Laravel 5.2

あなたがする必要があるのは、$signatureプロパティの引数(またはオプション、例えば--option)を配列として指定することです。Laravelはこれをアスタリスクで示しています。

引数

たとえば、画像を「処理」する職人のコマンドがあるとします。

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

その後、次のことを行います。

php artisan help image:process

…laravelは正しいUnixスタイルの構文を追加します。

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

リストにアクセスするには、handle()メソッドで次を使用します。

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

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

オプション

オプションでも機能すると言ったので、代わりに使用{--id=*}$signatureます。

ヘルプテキストには次のように表示されます。

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'を省略すると、'quiet'、'verbose'などのブール値を含むすべてのオプションが表示されます。

$options = $this->option();

のIDのリストにアクセスできます$options['id']

LaravelArtisanガイドで詳細をご覧ください。

于 2016-08-20T09:59:17.957 に答える
7
class Sample_Task
{
    public function create($args) {
       $arg1 = $args[0];
       $arg2 = $args[1];
        // something here
    }
}
于 2013-01-18T10:36:08.073 に答える