从artisan命令重定向到URL

6by*_*tes 1 php redirect laravel laravel-5.4

我正在使用Laravel 5.4。我有一个artisan命令,通常由cron运行,但是也可以由用户从网站内部运行。用户在页面上/customer/123,然后单击带有的链接的按钮/customer/vat/123,artisan命令执行其工作,应将浏览器重定向回/customer/123,但并非出于某些原因。
我的路线如下所示:

Route::get('customer/vat/{id}', function ($id) {
    Artisan::call('app:reminder', [
        '--vat' => $id
    ]);
});
Run Code Online (Sandbox Code Playgroud)

整个过程按预期运行,只是重定向不执行任何操作。没有错误消息,日志中没有任何内容,只有空白页。

在最底层的工匠命令中,我有:

return redirect::to('/customer/123');
Run Code Online (Sandbox Code Playgroud)

我希望可以将我重定向到上述网址,但事实并非如此。

我是否需要使用其他功能从artisan命令中重定向?

Par*_*ras 5

首先,您的artisan命令返回了一些内容,但您没有在路线关闭中返回任何内容。所以很明显,结果将是空的。

其次,即使您说它return Artisan::call('...');不起作用,因为call方法返回的是console命令的退出状态,而不是您在handleartisan命令的方法中返回的输出。

最后,永远不会期望Artisan命令返回view。想一想,工匠命令为什么会返回视图?工匠命令意思是控制台命令,并不意味着回归responsesrequests。你有控制器

要解决此问题,您可以执行以下操作:

Route::get('customer/vat/{id}', function ($id) {
    Artisan::call('app:reminder', [
        '--vat' => $id
    ]);
    return redirect()->to('/customer/123');
});
Run Code Online (Sandbox Code Playgroud)

然后return redirect()->to('/customer/123');从您的工匠命令句柄方法中删除