首页 > 解决方案 > Laravel 8:无法找到组件 [dashboardHeader] 的类或视图

问题描述

在我的本地主机中一切都很好。但是在放入在线服务器后,我遇到了很多错误。我收到此错误,名称中没有区分大小写的问题。

这是我的班级名称app->http->view/component

class dashboardHeader extends Component

这是我在视图文件中调用组件的标签。

<x-dashboardHeader />

我也试过这种方式

<x-dashboardHeader> </x-dashboardHeader>

但它仍然无法正常工作!

标签: laravel

解决方案


我会把这个作为答案,因为它对于评论来说太大了。

当您将x-dashboardHeader标签放入模板时 - Laravel 实际上是在尝试从View\Components命名空间(将其读取为LARAVEL_ROOT\App\View\Components\DashboardHeader.php )加载您的DashboardHeader类(注意大写的 D )。 它使用由作曲家生成的自动加载器来完成。

在使用 Windows/MacOS 进行开发时 - 文件名区分大小写不是问题,因为在这些系统中,您不能有两个具有相同名称的文件(与名称大小写无关)。因此,如果您有一个名为“myCoolFile”的文件 - 您可以使用“mycoolfile”、“MyCoolFile”等访问它......

但是对于 unix 系统,情况并非如此。在这些系统中,文件名区分大小写。您可以拥有 3 个名为“myCoolFile”、“mycoolFile”、“MyCoolFile”的文件,这不会有问题。您可以使用以下方法自行测试:

touch myCoolFile
touch MyCoolFile
touch mycoolfile
ls -l

所以回到 Laravel 尝试加载您的LARAVEL_ROOT\App\View\Components\DashboardHeader.php文件,在您的案例中,该文件的名称不同dashboardHeader.php。而且由于DashboardHeader.phpdashboardHeader.php在 unix 系统中是不同的文件 - 你会得到错误。

我真的希望我能描述这个问题。

这就是为什么我建议您可能想要阅读PHP-PSR文档(Laravel 再次遵循该文档),其中说类必须使用StudlyCaps命名。所以没有“dashboardHeader”,没有“dashboard_Header”之类的东西,只有“DashboardHeader”,“MyCoolClass”等等。


推荐阅读