首页 > 解决方案 > Laravel:目标类不存在。但它确实

问题描述

我一直在寻找答案,但主要是问题是类或控制器中的拼写错误。

就我而言,一切都拼写正确。 app\Http\Controllers\GenerateTextController.php中的

<?php 
      namespace App\Http\Controllers;

      class generateText extends Controller
      {
           public function generate()
           {
              dd('success');
           }
      }

然后我尝试将其注入刀片。home.blade.php

  @inject ('generate', 'App\Http\Controllers\GenerateTextController')
  @dd($generate)

结果:

Target class [App\Http\Controllers\GenerateTextController] does not exist. 

我已经自动加载了几次作曲家,清除了工匠缓存,没有任何帮助。我什至无法在 web.xml 中找到最接近的解决方案。

有趣的事情:当我尝试dd其他类时,也就是说,如何说 Laravel 的“预定义” - 它显示了该类。我的第二个自定义类可以通过这种注入在浏览器中查看。

任何帮助表示赞赏。

标签: phplaravelclass

解决方案


你的类文件名是app\Http\Controllers\GenerateTextController.php,但类名是generateText,这就是问题所在。类名和文件名应该匹配。这就是PSR-4自动加载器的工作方式。

从规范:

终止类名对应于以 .php 结尾的文件名。文件名必须与终止类名的大小写匹配。

所以类名应该是这样的:

class GenerateTextController extends Controller
{
    // ...
}

阅读PSR-4自动装载机以了解它。


推荐阅读