【问题标题】:Laravel 5.1: Retrieve method(s) for route name?Laravel 5.1:检索路线名称的方法?
【发布时间】:2015-10-21 17:11:10
【问题描述】:

有没有办法通过名称获取路由响应的方法? UrlGenerator(公平地说,正如我所期望的那样),只提供给定路由名称的 URL。是否有可以返回 URL 和路由可以响应的任何方法的服务提供者?如果可能的话,我宁愿不必直接挂接到应用程序的路由集合中。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我认为最好的方法是扩展 UrlGenerator。然后,您可以添加一个新方法来返回一个路由允许的 HTTP 方法数组。

    public function getMethodsForRoute($name)
    {
        if (! is_null($route = $this->routes->getByName($name)))
        {
            return $route->methods();
        }
    
        throw new InvalidArgumentException("Route [{$name}] not defined.");
    }
    

    作为替代方案,您可以从路由器获取当前路由并以这种方式返回它们。然而,它稍微不那么优雅。 (注意这是未经测试的)

    $name = 'route.name';
    
    $router = app('Illuminate\Routing\Router');
    
    if (! is_null($route = $router->getRoutes()->getByName($name)))
    {
        $methods = $route->methods();
    }
    

    【讨论】:

    • 添加到应用程序 RouteServiceProvider 会不会更好,所以我不会更改任何内置的服务提供程序?我也可以从那里访问路由器。
    • 如果您要扩展 UrlGenerator,我建议创建一个新的服务提供程序来注册您的 UrlGenerator 扩展版本。
    猜你喜欢
    • 2013-02-01
    • 2017-04-03
    • 2015-10-04
    • 2018-05-21
    • 1970-01-01
    • 2016-05-03
    • 2021-08-06
    • 2015-02-12
    • 2016-01-24
    相关资源
    最近更新 更多