Laravel 5.1 - 获取当前路线

Laravel 5.1 - get current route

我正在开发一种功能,可以为每个视图自动获取资产 (.css, .js)。所以它适用于比方说“http://mywebsite.com/displayitems”、/home、/about 等

但是自从我使用 $_SERVER['REQUEST_URI'] 编写函数以来,由于路由中的“/1”,当我有一个像 /displayitems/1 这样的路由时,我遇到了一个问题。

当时在 Laravel 4.x 我有一个很好的方法来做到这一点,但遗憾的是它在 Laravel 5.4.

中的工作方式不同

我一直在网上搜索获取当前路线的好方法,但没有成功。问题是我必须忽略请求中的任何参数 URL.

如果有人有线索,或者我做错了,有完全不同的更好方法吗?

P.S 我当前的函数:

public static function getAllRouteAssets() {
    $route = $_SERVER['REQUEST_URI'];
    if($route == "/") {
        $tag = '<link href="' . asset("assets/css/pages/home.css") . '" rel="stylesheet" type="text/css"/>';
    }
    else {
        // CSS
        $tag = '<link href="' . asset("assets/css/pages" . $route . ".css") . '" rel="stylesheet" type="text/css"/>';
    }
    echo $tag;

    //TODO: Check if file exists, homepage condition, js...
}

你可以试试这个:

// Add the following (`use Illuminate\Http\Request`) statement at top your the class

public static function getAllRouteAssets(Request $request)
{
    // Get the current route
    $currentRoute = $request->route();
}

更新(从IoC/Service容器获取请求实例并调用route()获取当前路由):

app('request')->route(); // Current route has been retrieved

如果你想将当前路由作为参数传递给你的 getAllRouteAssets 方法,那么你必须更改 typehint 或传递 Request 并调用 route 方法来自 getAllRouteAssets 方法。

我知道这有点老了,但是有一种方法可以为您提供完整的查询路径:

$request->getPathInfo();

但是,请注意,如果您还想获取查询字符串,这将不起作用。 (仅供参考,Laravel 5 默认不支持查询字符串)

您可以通过以下方式从查询字符串中单独获取 GET 变量:

$request->input('id');

示例:

http://laravel.com/api/users/?id=123 会 return /api/users 使用 getPathInfo()123 使用 $request->input('id');

我正在使用 Laravel 5.5.20。我还需要在没有获取参数的情况下获取部分路由。在 web.php 中定义的路由没有问号(?),例如:

 Route::get('board/{param_1}/{param_2}', 'BoardController@index');

在那种情况下,我没有在路线 class 中看到直接方法来获取没有 url 参数的部分。 这是我如何获得静态部分 (/board):

... use Illuminate\Support\Facades\Route; .. $staticPrefix = Route::getCurrentRequest()->route()->getCompiled()->getStaticPrefix(); ...