我的命令如何将可选参数传递给另一个 Artisan 命令?
How can my command pass through optional arguments to another Artisan command?
(更新问题以表明它与链接的问题不同)
我写了一个 Laravel 命令(完整显示在下面),它基本上是 Dusk 的包装器,这样我就可以确保事先调用某些其他函数。 (否则我难免会忘记重置我的测试环境。)
当我 运行 php artisan mydusk
.
时效果很好
namespace App\Console\Commands;
class DuskCommand extends BaseCommand {
protected $signature = 'mydusk {file?} {--filter=?}';
protected $description = 'refreshAndSeedTestingDb, then run Dusk suite of tests';
public function handle() {
$this->consoleOutput($this->description);
$resetTestingEnv = new ResetTestingEnv();
$resetTestingEnv->refreshAndSeedTestingDb();
$this->consoleOutput('refreshAndSeedTestingDb finished. Now will run Dusk...');
$file = $this->argument('file');//What to do with this?
return \Artisan::call('dusk', ['--filter' => $this->option('filter')]);
}
}
如您所见,我已经阅读了 these docs 并了解如何编写 $signature
来接受可选参数。
我的目标是有时 运行 php artisan mydusk
并且还能够有选择地添加参数,例如当我可能想调用 php artisan mydusk tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick
之类的东西时(这将通过tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick
参数到正常的 dusk
命令)。
如何编辑我的 handle()
函数的最后两行,以便 $file
传递给 dusk
?
您也可以看看这些链接,它们可能会对您有所帮助。
Stack Answer 1
Stack Answer 2
我很惊讶地从我的实验中得知我原来的功能确实如我所愿地工作,我可以删除惰性线($file = $this->argument('file');
)。
通过 \Artisan::call()
传递 file
参数实际上似乎根本没有必要。
@fubar 的回答似乎和我原来的假设一样错误。
正如@Jonas Staudenmeir 在评论中暗示的那样,Laravel\Dusk\Console\DuskCommand
使用来自 $_SERVER['argv']
的参数。
(更新问题以表明它与链接的问题不同)
我写了一个 Laravel 命令(完整显示在下面),它基本上是 Dusk 的包装器,这样我就可以确保事先调用某些其他函数。 (否则我难免会忘记重置我的测试环境。)
当我 运行 php artisan mydusk
.
namespace App\Console\Commands;
class DuskCommand extends BaseCommand {
protected $signature = 'mydusk {file?} {--filter=?}';
protected $description = 'refreshAndSeedTestingDb, then run Dusk suite of tests';
public function handle() {
$this->consoleOutput($this->description);
$resetTestingEnv = new ResetTestingEnv();
$resetTestingEnv->refreshAndSeedTestingDb();
$this->consoleOutput('refreshAndSeedTestingDb finished. Now will run Dusk...');
$file = $this->argument('file');//What to do with this?
return \Artisan::call('dusk', ['--filter' => $this->option('filter')]);
}
}
如您所见,我已经阅读了 these docs 并了解如何编写 $signature
来接受可选参数。
我的目标是有时 运行 php artisan mydusk
并且还能够有选择地添加参数,例如当我可能想调用 php artisan mydusk tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick
之类的东西时(这将通过tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick
参数到正常的 dusk
命令)。
如何编辑我的 handle()
函数的最后两行,以便 $file
传递给 dusk
?
您也可以看看这些链接,它们可能会对您有所帮助。
Stack Answer 1
Stack Answer 2
我很惊讶地从我的实验中得知我原来的功能确实如我所愿地工作,我可以删除惰性线($file = $this->argument('file');
)。
通过 \Artisan::call()
传递 file
参数实际上似乎根本没有必要。
@fubar 的回答似乎和我原来的假设一样错误。
正如@Jonas Staudenmeir 在评论中暗示的那样,Laravel\Dusk\Console\DuskCommand
使用来自 $_SERVER['argv']
的参数。