找不到 Laravel 命名空间路由


Laravel Namespaced Routes Not Found

我有一个这样的路由文件:

<?php
Route::group(['prefix' => 'project1', 'namespace' => ''App'Project1'Controllers'], function()
{
    Route::get('/', 'UsersController@index');
});

但是当我尝试访问dev.api/project1/时,它会抛出以下错误:

Class App'Http'Controllers'App'Project1'Controllers'UsersController does not exist

你可能会指出这是显而易见的,你应该做这样的事情:

Route::get('/', ''App'Project1'Controllers'UsersController@index');

但是,声明命名空间而不首先实际使用它不是没有用吗?

无论如何,我应该怎么做才能调用控制器而不每次都预置命名空间?谢谢

默认情况下,app/Http/routes.php中的路由会自动加载到 App'Http'Controllers 命名空间中。在此文件中,您指定的任何命名空间都将相对于该父命名空间。

如果要修改此行为,可以在app/Providers/RouteServiceProvider.php文件中执行此操作。

几个快速选项:

  • 可以通过修改 protected $namespace 属性来修改默认父命名空间。

  • 可以通过删除 map() 方法中的初始$router->group()来删除任何默认的父命名空间。

  • 您可以创建一个全新的app/Project1/routes.php文件,并将其加载到第二个路由器组中,并将App'Project1'Controllers作为该文件中列出的任何路由的默认父命名空间:

    public function map(Router $router)
    {
        $router->group(['namespace' => $this->namespace], function ($router)     {
            require app_path('Http/routes.php');
        });
        $router->group(['namespace' => 'App'Project1'Controllers'], function ($router)     {
            require app_path('Project1/routes.php');
        });
    }