微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Laravel:将任意URL解析为相应的Controller / Route?

鉴于我有一个任意的URL映射(以及许多其他)像这样

...
Route::get('/foobar/{parameter}', 'MyFoobarController@index');
...

如何将URL(如http:// localhost / foobar / foo)“反向解析/解析”到此配置的控制器(MyFoobarController)中?请注意:我不是在讨论当前的请求,而是一种将Laravel中映射的任何URL解析为相应的Controller和Action(代码中任何位置,与当前请求无关)的一般方法.谢谢!

更新:它还应正确匹配具有参数的路由.

解决方法:

您可以将URL路径与添加到路由器的路径进行比较.让我们举个例子:

Route::get('/foobar', 'MyFoobarController@index');

您可以使用Route facade获取所有已注册路径的列表:

// This is your URL as a string
$url = 'http://localhost/foobar';

// Extract the path from that URL
$path = trim(parse_url($url, PHP_URL_PATH), '/');

// Iterate over the routes until you find a match
foreach (Route::getRoutes() as $route) {
    if ($route->getPath() == $path) {
        // Access the action with $route->getAction()
        break;
    }
}

getAction方法将返回一个数组,其中包含有关为该路由映射的操作的相关信息.您可以查看Illuminate\Routing\Route API以获取有关在匹配路线后可以使用哪些方法的更多信息.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐