【问题标题】:How can my command pass through optional arguments to another Artisan command?我的命令如何通过可选参数传递给另一个 Artisan 命令?
【发布时间】:2018-12-10 05:11:01
【问题描述】:

(更新的问题表明它不像链接的问题)

我编写了一个 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 参数传递给普通的 @ 987654330@ 命令)。

如何编辑handle() 函数的最后两行,以便将$file 传递给dusk

【问题讨论】:

标签: laravel laravel-5 laravel-artisan laravel-dusk


【解决方案1】:

您也可以查看这些链接,它可能会对您有所帮助。

Stack Answer 1

Stack Answer 2

【讨论】:

  • 谢谢,但我已经阅读了这些链接。我觉得你可能没有阅读我的问题。无论如何,我现在已经对其进行了编辑以使其更清晰。谢谢你的帮助。 :-)
  • 没问题,如果我能帮助@Ryan,我会发帖的
【解决方案2】:

我很惊讶地从我的实验中得知我的原始函数实际上可以按我的意愿工作,并且我可以删除惰性线 ($file = $this->argument('file');)。

通过\Artisan::call() 传递file 参数实际上似乎根本没有必要。

@fubar 的回答似乎做出了与我最初所做的相同的错误假设。

正如@Jonas Staudenmeir 在评论中暗示的那样,Laravel\Dusk\Console\DuskCommand 使用来自$_SERVER['argv'] 的参数。

【讨论】:

  • 之所以有效,是因为Laravel\Dusk\Console\DuskCommand$_SERVER['argv'] 获取参数。
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 2012-10-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
相关资源
最近更新 更多