为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 刀片组件中隐藏的魔法

Laravel 刀片组件中隐藏的魔法

PHP
哔哔one 2023-03-04 14:21:06
我有匿名组件resources\views\components\homepage\feedback.blade.php来在主页上呈现反馈。从一开始它只是html。然后我决定连接Class文件。我已经有了另一个 View Class 组件,我只是手动复制它而不是使用 artisan 命令。App\View\Components\Feedback.phpnamespace App\View\Components;use Illuminate\View\Component;use App\Models\Feedback;class Feedback extends Component{    public $feedbacks;    public function __construct()    {        $this->feedbacks = Feedback::wherePublished(true)->take(5);    }    public function render()    {        return view('components.homepage.feedback');    }}然后视图文件中的 {{ dd($feedbacks) }} 给我错误,提示未定义此变量。Undefined variable: feedbacks (View: C:\laragon\www\lara7\resources\views\components\homepage\feedback.blade.php)如果我尝试使用 artisan 命令创建测试组件并将此代码放入其中,它就可以工作,但我无法将其重命名回反馈类。它给我错误Symfony\Component\ErrorHandler\Error\FatalErrorCannot declare class App\View\Components\Feedback because the name is already in use但是旧班级已经删除了,所以我不明白出了什么问题。View Class 和 Blade 组件之间似乎有一些隐藏的链接,需要删除。但是这个链接在哪里?
查看完整描述

4 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

在将组件类型从匿名切换到类并返回时,您必须清除已编译的视图文件:

php artisan view:clear

那是因为 Laravel 将特定的组件类型调用合并到编译的视图代码中。


查看完整回答
反对 回复 2023-03-04
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我发现了问题。

我得到了$feedbacks is undefined,因为我没有变量的匿名组件最初位于resources\views\components\homepage\feedback.blade.php,当我决定为此组件创建视图类时,没有建立链接。Laravel 在刀片文件直接位于文件夹中时创建自动链接feedback.blade.php,并且app\View\FeedbackComponent.php仅当刀片文件直接位于文件夹中时resources\views\components。我的组件在子文件夹中。

所以 laravel 尝试resources\views\components\homepage\feedback.blade.php使用$feedback内部变量进行渲染,但找不到$feedback定义的位置。

所以我只是像在 appservice provider boot 方法中那样手动注册 FeedbacksComponent 类

Blade::component('homepage-feedbacks', FeedbacksComponent::class);

然后用来 <x-homepage-feedbacks/>渲染它

我会说文档不是很清楚。它说组件文件夹之外的自动发现不起作用。但它并没有说内部组件子文件夹自动发现不起作用。


查看完整回答
反对 回复 2023-03-04
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

在 Laravel 8 中你可以使用并且不需要声明组件

<x-homepage.feedback />


查看完整回答
反对 回复 2023-03-04
?
慕容森

TA贡献1853条经验 获得超18个赞

我认为你是对的,我一直遇到同样的问题,而且我一直在努力解决这个问题。最后我找到了一个解决方法,如果你更改文件名它就可以工作,所以我认为这是 laravel 框架的问题,我认为他们需要解决这个问题



查看完整回答
反对 回复 2023-03-04
  • 4 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号