Вход Регистрация
Файл: vendor/spatie/laravel-ignition/src/Solutions/SolutionProviders/RouteNotDefinedSolutionProvider.php
Строк: 74
<?php

namespace SpatieLaravelIgnitionSolutionsSolutionProviders;

use 
IlluminateSupportFacadesRoute;
use 
SpatieIgnitionContractsBaseSolution;
use 
SpatieIgnitionContractsHasSolutionsForThrowable;
use 
SpatieLaravelIgnitionSupportStringComparator;
use 
SymfonyComponentRoutingExceptionRouteNotFoundException;
use 
Throwable;

class 
RouteNotDefinedSolutionProvider implements HasSolutionsForThrowable
{
    protected const 
REGEX '/Route [(.*)] not defined/m';

    public function 
canSolve(Throwable $throwable): bool
    
{
        if (! 
$throwable instanceof RouteNotFoundException) {
            return 
false;
        }

        return (bool)
preg_match(self::REGEX$throwable->getMessage(), $matches);
    }

    public function 
getSolutions(Throwable $throwable): array
    {
        
preg_match(self::REGEX$throwable->getMessage(), $matches);

        
$missingRoute $matches[1] ?? null;

        
$suggestedRoute $this->findRelatedRoute($missingRoute);

        if (
$suggestedRoute) {
            return [
                
BaseSolution::create("{$missingRoute} was not defined.")
                    ->
setSolutionDescription("Did you mean `{$suggestedRoute}`?"),
            ];
        }

        return [
            
BaseSolution::create("{$missingRoute} was not defined.")
                ->
setSolutionDescription('Are you sure that the route is defined'),
        ];
    }

    protected function 
findRelatedRoute(string $missingRoute): ?string
    
{
        
Route::getRoutes()->refreshNameLookups();

        return 
StringComparator::findClosestMatch(array_keys(Route::getRoutes()->getRoutesByName()), $missingRoute);
    }
}
Онлайн: 0
Реклама