亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號