如何从Laravel 5中的模块/目录中获取路由列表?

Sel*_*eza 5 php laravel laravel-4 laravel-routing laravel-5

我在app文件夹中有3个模块,例如:用户模块,角色模块和权限模块.另外,我在每个模块中都有不同的route.php文件.现在我需要从用户模块获取路由列表.

我使用以下代码从所有模块中获得了完整列表:

    $routeCollection =Route::getRoutes();  
    foreach ($routeCollection as $value) {
        echo $value->getPath()."<br>";
    }
Run Code Online (Sandbox Code Playgroud)

我希望从特定模块或特定目录中获取作为用户模块的路由列表,而不是所有路由.

如何获取特定文件夹/模块/文件的路由列表?

Ale*_*nin 2

如果您在要查找的路线中使用相同的控制器,您可以执行以下操作:

$routeCollection = \Route::getRoutes();

foreach ($routeCollection as $value) {
    $lookFor = 'UserController';
    $controller = $value->getAction();
    $controller = $controller['controller'];

    if (strpos($controller, $lookFor)) {
        echo "This route uses UserController controller ";
    }

    echo $value->getPath()."<br>";
}
Run Code Online (Sandbox Code Playgroud)

好吧,你明白了。您可以使用相同的方法来搜索Route::getRoutes()集合中的任何其他信息。

更新:

如果你想获取所有使用 的路由UserController,你可以这样做:

$routeCollection = \Route::getRoutes();
$userRoutesArray = [];

foreach ($routeCollection as $value) {
    $lookFor = 'UserController';
    $controller = $value->getAction();
    if(isset($controller['controller'])){ 
        $controller = $controller['controller'];
    }else{
        continue;
    }

    if (strpos($controller, $lookFor)) {
        array_push($userRoutesArray, $value->getPath();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用for或迭代它foreach