【问题标题】:Laravel 8 Controllers Subfolder routing issues "Class 'App\Http\Controllers\APIControllers\Controller' not found"Laravel 8 Controllers 子文件夹路由问题“找不到类'App\Http\Controllers\APIControllers\Controller'”
【发布时间】:2022-01-11 11:19:09
【问题描述】:

我是 laravel 8 框架的新手,我正在处理控制器子文件夹,但我无法访问我的控制器文件。 我正在访问的控制器位于 Controllers/APIControllers 文件夹中,名称为 LoginController.php 路径是 Controllers/APIControllers/LoginController

请帮我找到最佳解决方案。

下面是我的代码。

api.php


    <?php
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Route;
    use App\Http\Controllers;
    use App\Http\Controllers\APIControllers\LoginController;
    
    
    Route::middleware('auth:api')->get('/user', function (Request $request) {
        return $request->user();
    });
    
    Route::get('login',[LoginController::class, 'LoginPage']);

登录控制器.php


    <?php
    use App\Http\Controllers;
    use Illuminate\Http\Request;
    namespace App\Http\Controllers\APIControllers;
    
    class LoginController extends Controller
    {
        public function LoginPage()
        {
            return ["name"=>"test"];
        }
    }

【问题讨论】:

  • 什么错误?你得到了吗?
  • 我猜你在api文件夹中写代码所以你的路线是api/login
  • 您可以使用php artisan route:list 查看应用程序中定义的路由列表。
  • @KamleshPaul PHP 致命错误:找不到类 'App\Http\Controllers\APIControllers\Controller'

标签: php laravel routes controller laravel-8


【解决方案1】:

在您的 LoginController 内部,有一个涉及扩展 Controller 类的错误:

    <?php
    use App\Http\Controllers;
    use Illuminate\Http\Request;
    namespace App\Http\Controllers\APIControllers;
    
    class LoginController extends Controller
    {
        public function LoginPage()
        {
            return ["name"=>"test"];
        }
    }

引用 Controller 类的第一行应该是:

    <?php
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    namespace App\Http\Controllers\APIControllers;
    
    class LoginController extends Controller
    {
        public function LoginPage()
        {
            return ["name"=>"test"];
        }
    }

【讨论】:

    【解决方案2】:

    将此添加到您的 LoginController 标题的第一个顶部

    <?php
    namespace App\Http\Controllers\APIControllers;
    use App\Http\Controllers\Controller;
    

    在此之后添加其他代码,然后进行硬刷新和检查。

    【讨论】:

      【解决方案3】:

      您在某些代码行之后编写了命名空间;现在将命名空间移动到 行之后

      如下图

      namespace App\Http\Controllers\APIControllers;
      use App\Http\Controllers\Controller;
      use Illuminate\Http\Request;
      

      在这之后它就完美地工作了。

      【讨论】:

        【解决方案4】:

        你的命名空间应该在你的控制器内的 php 标签之后。然后写下你的导入行。您的控制器类也有问题 - 应该是这样的:

        <?php
        namespace App\Http\Controllers\APIControllers;`enter code here`
        use App\Http\Controllers\Controller;
        use Illuminate\Http\Request;
        
        class LoginController extends Controller
        {
            public function LoginPage()
            {
                return ["name"=>"test"];
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2021-03-29
          • 2016-05-09
          • 2020-04-13
          • 1970-01-01
          • 2018-01-03
          • 2017-03-27
          • 2021-09-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多