通过不同名称空间中的名称获取路由

时间:2019-12-23 14:29:44

标签: laravel routes laravel-5.8

文件夹的结构:

-App
  -CustomClasses
    Menu.php
  -Http
    -Controllers
      TestController.php

当我从Route::getRoutes()中使用TestController.php时,我具有所有路由,但是当我在Menu.php中使用相同方法时,结果为空。因此,我需要的route('route-name')也无法正常工作。我认为可能是由于名称空间不同所致,但是是否有任何简单的方法可以通过Menu.php或Controllers文件夹之外的任何其他文件中的路由名称获取路由URL?

1 个答案:

答案 0 :(得分:0)

一段时间后,我自己找到了解决方案。在app/Providers/AppServiceProvider.php中,有两种方法:register()boot()。我在boot()方法中创建了Menu对象的实例,但是仍然收到空的路由列表。我注意到config/app.php中有一个服务提供商列表,但是这里的顺序很重要。

App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,

您可以看到AppSeriveProviderRouteServiceProvider之前,这意味着Route的引导方法最后运行,因此如果我尝试在{{1 }}。

我的解决方案是创建AppServiceProvider并在Route的提供程序之后加载它,而不是在MenuServiceProvider中创建它。