所以基本上我试图从我创建的自定义工匠命令中获取应用程序上的路由输出。我创建了Request并在handle函数中使用Router调度它并进行测试,只需将响应输出到控制台。
当我从控制台运行命令时,我总是收到一条错误说" Class web不存在",我相信' web'是中间件。
这是我第一次尝试这样做而且卡住了。如果您能检查我的代码并帮助我找出导致此错误的原因,我将非常感激。
这是我的命令:
<?php
namespace APP\Console\Commands;
use Illuminate\Http\Request;
use Illuminate\Routing\Router;
use Illuminate\Events\Dispatcher;
use Illuminate\Console\Command;
class TestCmd extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'testcmd';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
protected $request;
protected $router;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(Router $router)
{
parent::__construct();
$this->router = $router;
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$request = Request::create('test-route', 'GET');
$this->info($this->router->dispatch($request));
}
}
我得到的错误是:
ReflectionException in Container.php line 738: Class web does not exist
(这只是错误,输出实际上是控制台上显示的默认laravel错误模板)
谢谢!
修改
为了让我的问题更加清晰,我想用这段代码描述我的目标。我想从命令行运行一个artisan命令,该命令将在我的应用程序中获取路由的响应并返回它。这些路线只是API终点。如果需要更多详细信息,请告诉我
答案 0 :(得分:1)
试试这个
public function handle()
{
$request = Request::create('test-route', 'GET');
$kernel = app()->make(\Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle($request);
$this->info($response->getOriginalContent());
}