![](/img/trans.png)
[英]Laravel Facade class not loading root class instead returns method not found
[英]Laravel 8 - Facade Class Not Found
在嘗試復制簡單的教程以開始一個新項目后,我一直在努力解決這個問題。
遵循此處的教程: https ://medium.com/@cmanish049/creating-custom-facades-in-laravel-b9b72d573752
創建輔助函數
namespace App\\CSVUtils; class CSVParser { public function sayHello() { echo "Hello, from Facade class."; } }
創建服務提供者
<?php namespace App\\Providers; use Illuminate\\Support\\ServiceProvider; use App\\CSVUtils\\CSVParser; class CsvParserServiceProvider extends ServiceProvider { /** * Register services. * * @return void */ public function register() { $this->app->bind('csvparser',function(){ return new CSVParser(); }); } /** * Bootstrap services. * * @return void */ public function boot() { $this->app->bind('csvparser',function(){ return new CSVParser(); }); } }
創建了外觀
<? namespace App\\CSVUtils; use Illuminate\\Support\\Facades\\Facade; class CSVParserFacade extends Facade { protected static function getFacadeAccessor() { return 'csvparser'; } }
將以下內容添加到 app/config.php (我沒有刪除任何默認條目只是添加了以下內容
'providers' => [ App\\Providers\\CsvParserServiceProvider::class, ... ], 'aliases' => [ 'CSV' => App\\CSVUtiles\\CSVParserFacade::class, ... ]
在我的控制器中調用別名
<?php use Illuminate\\Support\\Facades\\Route; Route::get('/csv', function () { CSV::sayHello(); //return view('welcome'); });
結果:
ErrorException 類“App\\CSVUtiles\\CSVParserFacade”未找到 http://localhost/csv
Illuminate\\Foundation\\Bootstrap\\HandleExceptions::handleError vendor/laravel/framework/src/Illuminate/Foundation/AliasLoader.php:80
我嘗試了很多東西,重命名類/文件更改命名空間,直接調用 Facade(而不是從別名)
我還嘗試了以下方法:
composer dump-autoload php artisan config:clear php artisan cache:clear php artisan clear-compiled
現在我覺得我正在失去理智。 這是忙碌的一天,我的大腦被炸了,但我希望我錯過了一些簡單的東西。
請幫忙!! :)
更新以下代碼 - CSV 的別名:
'providers' => [
App\Providers\CsvParserServiceProvider::class,
...
],
'aliases' => [
'CSV' => App\CSVUtils\CSVParserFacade::class,
...
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.