如何编写artisan命令以在Laravel中搜索特定的路线名称

时间:2019-06-01 07:00:01

标签: php laravel routing artisan

我正在为Laravel编写命令以搜索特定的路线模式。

我创建了带有参数{route}的命令,该命令执行bash命令并回显结果。

protected $signature = 'routes:find {route}';

  public function handle()
    {
        echo  exec('php artisan route:list | grep '.$this->argument('route'));
    }

问题是此命令在一行中输出路由,并且不像默认route:list命令那样提供任何格式。

1 个答案:

答案 0 :(得分:0)

如果您exec将该命令在Windows中不起作用。另外,也不能保证也存在grep命令。

为什么不执行原始的route:list命令呢?

如果您检查RouteListCommand.php文件(在vendor目录中进行搜索),将会找到一种更好的方法来搜索路线,

public function __construct(Router $router)
{
    parent::__construct();

    $this->router = $router;
    $this->routes = $router->getRoutes();
}

正确的方法是委托Illuminate\Routing\Router对象为您提供路由。