工匠呼叫输出在控制器?

2022-08-30 20:20:22

我有一个复杂的工匠命令,我也想在我的控制器中调用它。这行得通。除了它返回退出代码而不是输出。

use Symfony\Component\Console\Output\BufferedOutput; # on top

public function foobar(Request $request)
{
    $this->validate($request, [
        'date' => 'required|date_format:Y-m-d',
    ]);

    $output = new BufferedOutput;

    $exitCode = Artisan::call('foo:bar', [
        'datum' => $request->get('date'),
    ], $output);
    return $exitCode; # returns 0;
    return dd($output->fetch()); # returns ""
}

我想要命令的输出。如何做到这一点?我的 Artisan 命令的最后一行在应该返回的最后一行上有一个返回。如何?


答案 1
$command = 'foo:bar';

$params = [
        'datum' => $request->get('date'),
];

Artisan::call($command, $params);
dd(Artisan::output());

答案 2

代码以输出激励短语而不是退出代码

Route::get('/wisdom', function (Request $request) {
   Artisan::call('inspire');
   return Artisan::output();
});

推荐