通过URL调用Artisan Command

时间:2018-04-17 11:42:44

标签: laravel-5 artisan

在我的路线中我有

Route::get('artisan/{command}/{param}', 'CacheController@show');

在我的控制器中我有

public function show($id, $param)
{
    $artisan = Artisan::call($id,['flag'=>$param]);
    $output = Artisan::output();
    return $output;
}

我希望能够通过访问route:cachecache:clear来致电domain.com/artisan/cache/clearroute/cache但是当我打电话给它时,它会返回类似这样的内容

  

命令"缓存"没有定义。

它只调用缓存,而不是cache:clear出错的可能性是什么?

2 个答案:

答案 0 :(得分:1)

当您调用id

时,您正在呼叫command

所以你的功能需要看起来像这样

public function show($command, $param) {
    $artisan = Artisan::call($command,['flag'=>$param]);
    $output = Artisan::output();
    return $output;
}

因此,您的网址可能如下domain.com/artisan/cache/clear,这意味着您正在调用此路线

Route::get('artisan/{command}/{param}', 'CacheController@show');

因此,您需要$command

$id内容

答案 1 :(得分:0)

像这样修改你的代码:

    $artisan = \Artisan::call($command.":".$param);
    $output = \Artisan::output();
    return $output;

Flag参数用于传递artisan命令的参数。