[英]Laravel 8: Target class does not exist ERROR
我有兩個ArticleController
,其中一個放在控制器內的Admin
目錄中:
use App\Http\Controllers\Admin\ArticleController as ArticleADMController;
use App\Http\Controllers\ArticleController;
Route::get('/articles/{articleSlug}' , [ArticleController::class, 'single']);
Route::prefix('admin')->namespace('Admin')->group(function() {
Route::resource('articles' , ArticleADMController::class)->except(['show']);
});
現在每當我想 go 到/admin/articles
時,我都會收到這條消息:
Illuminate\Contracts\Container\BindingResolutionException 目標 class [Admin\App\Http\Controllers\Admin\ArticleController] 不存在。
但是,它確實存在於此圖片中:
那么這里出了什么問題? 我該如何解決這個問題?
如果你知道,請幫助我解決這個問題,我非常感謝你們的任何想法或建議......
提前致謝。
從您的路線中刪除命名空間('Admin')。 您正在為 Admin/ArticleController 添加前綴。 由於您已經使用了命名空間路徑,因此您無需在路由組中單獨添加任何命名空間。
如果仍然無法解決問題,請在您的 Admin\ArticleController 中共享命名空間聲明。
對於管理員路徑:您已經指定 controller 來自管理員路徑,試試這個。
對於文章路由:刪除了“使用”並將完整路徑直接包含在“文章”路由的路徑中。
Route::get('/articles/{articleSlug}' , [App\Http\Controllers\ArticleController::class, 'single']);
Route::prefix('admin')->namespace('Admin')->group(function() {
Route::resource('articles' , ArticleController::class)->except(['show']);
});
對於 Laravel 9,在這種情況下,這是我遇到類似問題時的解決方案
我發現我的問題是由這條線引起的Route::resource('/blog', 'BlogController', ['except' => ['show']]);
在我的 web.php 文件中
最初我的資源被注冊為Route::resource('/blog', 'BlogController', ['except' => ['show']]);
我繼續將其重構為Route::resource('/blog', 'App\Http\Controllers\BlogController', ['except' => ['show']]);
然后php artisan route:clear
和php artisan optimize
然后php artisan route:list
這應該可以解決問題,如果您正在使用resources
並且還看到您已經在 web.php 文件的頂部擁有 Controller 的命名空間,但仍然面臨問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.