【发布时间】:2015-10-21 17:11:10
【问题描述】:
有没有办法通过名称获取路由响应的方法? UrlGenerator(公平地说,正如我所期望的那样),只提供给定路由名称的 URL。是否有可以返回 URL 和路由可以响应的任何方法的服务提供者?如果可能的话,我宁愿不必直接挂接到应用程序的路由集合中。
【问题讨论】:
有没有办法通过名称获取路由响应的方法? UrlGenerator(公平地说,正如我所期望的那样),只提供给定路由名称的 URL。是否有可以返回 URL 和路由可以响应的任何方法的服务提供者?如果可能的话,我宁愿不必直接挂接到应用程序的路由集合中。
【问题讨论】:
我认为最好的方法是扩展 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();
}
【讨论】: