gpt4 book ai didi

php - Laravel:将任意 URL 解析为其相应的 Controller /路由?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:07 28 4
gpt4 key购买 nike

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

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

如何将 URL(如 http://localhost/foobar/foo)再次“反向解析/解析”到这个已配置的 Controller (MyFoobarController)中?请注意:我不是在谈论当前请求,而是解析在 Laravel 中映射到其相应 Controller 和操作(代码中独立于当前请求的任何位置)的任何 URL 的通用方法。谢谢!

更新:它还应该正确匹配包含参数的路由。

最佳答案

您可以将 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,了解有关在匹配路线后可以使用哪些方法的更多信息。

关于php - Laravel:将任意 URL 解析为其相应的 Controller /路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com