@if (Route::has(‘login’)) 在 blade 中, 要使用 @if (Illuminate\Support\Facades\Route::has(‘login’)) 這樣才能解析 Route, 否則會出現 Class Route not found ,那裡出錯?

在 Laravel 12 中,如果在 Blade 模板中直接使用 Route::has() 出現 “Class Route not found” 錯誤,而必須使用完整的命名空間 Illuminate\Support\Facades\Route::has(),這表明 Laravel 的 Facade 別名沒有正確註冊。
問題原因
Laravel 通常會自動加載 Route Facade 的別名(通過 config/app.php 的 aliases 陣列),但在升級到 Laravel 12 時可能出現:
config/app.php的aliases陣列缺少Route別名- Composer 自動加載未正確更新
- 緩存未清除導致別名未生效
解決方法
方法 1:檢查 config/app.php 的 aliases
確保 aliases 陣列包含 Route 別名:
'aliases' => [
// ...
'Route' => Illuminate\Support\Facades\Route::class,
// ...
],如果缺少,請手動添加並執行:
php artisan config:clear方法 2:更新 Composer 自動加載
有時 Composer 的 autoload 可能未正確更新:
composer dump-autoload方法 3:清除所有緩存
Laravel 可能緩存了舊的配置:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear方法 4:檢查 bootstrap/cache 目錄
如果 bootstrap/cache 目錄權限有問題,可能導致別名無法載入:
rm -rf bootstrap/cache/*
php artisan optimize方法 5:手動導入 Facade(臨時解決方案)
如果問題仍未解決,可以在 Blade 文件頂部手動導入:
@php use Illuminate\Support\Facades\Route; @endphp然後繼續使用:
@if (Route::has('login'))
...
@endif總結
- 主要問題:
RouteFacade 別名未正確註冊。 - 解決步驟:
- 檢查
config/app.php的aliases是否有Route。 - 執行
composer dump-autoload和php artisan config:clear。 - 如果仍然不行,手動導入
RouteFacade 或檢查緩存問題。
- 檢查
這樣應該能解決 Class Route not found 的問題。




