【问题标题】:Artisan::call error: Command "module:make Test" is not defined - Laravel 5.1Artisan::call 错误:命令“module:make Test”未定义 - Laravel 5.1
【发布时间】:2015-12-07 16:28:23
【问题描述】:

我正在尝试从代码中调用工匠命令。我要执行的命令是来自 pingpong 包的命令,如下:

 php artisan module:make Test

我正在使用以下代码进行此操作:

Artisan::call('module:make Test');

我得到的错误是:Command "module:make Test" 没有定义。 虽然这当然是一个很好的命令。

参数可以用如下数组给出:

Artisan::call('module:make', [
     'Test'
]);

但我猜这些参数仅适用于标志。因为这个命令什么都不做。没有错误。它只返回 0。

这里提出了同样的问题: https://github.com/pingpong-labs/modules/issues/202

【问题讨论】:

    标签: php laravel command laravel-5.1 laravel-artisan


    【解决方案1】:

    看起来参数的名称只是name,所以你应该可以这样称呼它:

    Artisan::call('module:make', [
         'name' => 'Test'
    ]);
    

    来源:https://github.com/pingpong-labs/modules/blob/master/Commands/MakeCommand.phphttp://laravel.com/docs/5.1/artisan#calling-commands-via-code

    【讨论】:

    • 感谢您的指挥。我已经尝试过了,但由于 foreach 的消息无效参数而失败。现在我在文件 MakeCommand.php 中注意到它需要一个数组作为 name 参数的值。所以我做了'name' => array('Test')。这有效并创建了文件夹,但是......现在我收到错误:file_get_contents(/start.stub): failed to open stream: No such file or directory。并非所有文件都没有添加一个,只有它创建了文件夹
    • 那将是一个单独的错误,但我对 PingPong 不熟悉,所以我不知道它可能是什么。至少你克服了第一道障碍。 :) 希望你也能解决下一个问题。
    • 这个错误非常愚蠢。我在 routes.php 文件中有该代码来快速测试它,但不在路由内。现在我将它放在一条路线中并且它可以工作......:D
    【解决方案2】:

    使用 pingpong 包创建新模块:

    Artisan::call('module:make', array(
        'name' => array('Test'),
    ));
    

    不要忘记将代码放在路线内部而不是外部,就像我一样。

    【讨论】:

      猜你喜欢
      • 2016-04-06
      • 2017-01-18
      • 2020-01-06
      • 2020-10-20
      • 2015-11-13
      • 1970-01-01
      • 2021-08-11
      • 2016-04-05
      相关资源
      最近更新 更多