Laravel Blade component method undefined in production but work in local dev(Laravel刀片组件方法在生产中未定义,但在本地开发中有效)
问题描述
我在应用程序/查看/组件/便笺中有一个组件NoteTag
,在resources/views/components/notes.中有一个刀片组件
我在父组件中使用此组件,如下所示:
<x-notes.note-tag :name="$tag->name"></x-notes.note-tag>
NoteTag
有一个我想在视图中使用的方法:
public function typeColor()
{
return substr(md5($this->name), 0, 6);
}
我在视图中引用该方法,如下所示:
<span style="border: 2px #{{ $typeColor() }} solid" class="rounded-lg mr-2 px-1 bg-gray-200 text-gray-600 shadow">
{{ $name }}
</span>
这在本地开发中效果很好,但在生产中我得到了这样的结果:
[previous exception] [object] (ErrorException(code: 0): Undefined variable $typeColor at /home/forge/loggbok.michaelsimsoe.no/storage/framework/views/e354b32f864ce675974b798281d94fe7f4dd2831.php:1)
[stacktrace]
我还尝试将其作为数据传递给视图:
public function render()
{
return view('components.notes.note-tag', ['color' => $this->typeColor()]);
}
,这会导致相同的错误。所以我猜在产品中存在一些映射问题,其中组件视图无法找到类。
根据https://github.com/laravel/framework/issues/31919和Laravel docs: Manually Registering Components我在AppServiceProvider
中尝试过:
use AppViewComponentsNotesNoteTag;
use IlluminateSupportFacadesBlade;
...
class AppServiceProvider extends ServiceProvider
{
...
public function boot()
{
Blade::component('note-tag', NoteTag::class);
}
...
运气不佳。
我看到多次提到此问题:
- SO: laravel 7 blade component public methods not working
- SO: Laravel Components not getting my methods in shared host
- Laracasts.com: laravel 7 blade component public methods not working
有些人提到类名的大小写是一个问题。一些人提到了组件的手动注册。它们都不适合我。
我正在使用Forge在DigitalOcean上托管该应用程序。
我使用的是最新版本的Laravel和PHP 8。
The repo for the application
有什么想法吗?
推荐答案
将我的评论转换为答案,因为谁不喜欢声誉?!;)
首先,您是否删除了生产服务器上
storage/framework/views
中的所有文件?
我打赌这只是一个缓存问题,所以php artisan view:clear
或手动删除该文件夹中的文件几乎肯定会解决这个问题(著名的最后一句话)!
除此之外,app/Views/Components/Notes/NoteTag.php
的类名是noteTag
(小写的n
)有什么原因吗?
尝试更改此选项以查看这是否解决了问题。
Laravel对其命名方案非常讲究。
所有文件名必须与它们的命名空间和类名完全匹配,这包括大小写。但视图并非如此,它们可以位于任何位置,因为它们是在Render方法中使用相对路径调用的。
这篇关于Laravel刀片组件方法在生产中未定义,但在本地开发中有效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel刀片组件方法在生产中未定义,但在本地开发中有效
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01