Как написать команду ремесленника для поиска конкретного имени маршрута в Laravel - PullRequest
3 голосов
/ 01 июня 2019

Я пишу команду для Laravel для поиска определенного шаблона маршрута.

Я создал команду с аргументом {route}, которая выполняет команду bash и выдает результат.

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

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

проблема в том, что эта команда выводит маршруты в одну строку и не предлагает никакого форматирования, как команда по умолчанию route:list.

1 Ответ

1 голос
/ 01 июня 2019

Если вы 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 для предоставления маршрутов.для вас.

...