سوال بپرسید
2

خطای Target class does not exist در لاراول 8

سوال بپرسید

سلام، وقتی من یک کنترلر در لاراول با دستور php artisan make:controller PostController ایجاد می کنم با خطای زیر رو به رو می شوم. لطفا راهنمایی کنید که چطور این خطا را برطرف کنم؟

Target class [PostController] does not exist.

 

برچسب ها:
گزارش سوال
پرسیده شده در
آمار بازدید: 138

1 پاسخ

4

سلام، شما از لاراول ۸ استفاده می کنید و باید دقت داشته باشید که در این نسخه namespace ها و پسوندهای آنها به صورت پیشفرض تعریف نشده اند و دلیل خطای شما هم همین موضوع است. در نسخه های قبلی در RouteServiceProvider یک متغییر به نام namespace وجود داشت که به صورت خودکار پس از نصب لاراول مسیردهی کنترلرها و Route ها را انجام میداد و این اتفاق در نسخه ۸ به بعد رخ نمی دهد. پس برای حل این مشکل چندین راه حل وجود دارد:

۱) تعریف namespace در RouteServiceProvider (پشنهاد من)

ابتدا به مسیر App\Providers\RouteServiceProvider رفته و سپس خط زیر را تابع boot اضافه کنید:

//ابتدا خط زیر را در این فایل از حالت کامنت خارج کنید
 protected $namespace = 'App\\Http\\Controllers';


public function boot()
{
    $this->configureRateLimiting();

    $this->routes(function () {
        Route::prefix('api')
            ->middleware('api')
            ->namespace($this->namespace)// این خط را اضافه کنید
            ->group(base_path('routes/api.php'));

        Route::middleware('web')
            ->namespace($this->namespace)// این خط را اضافه کنید
            ->group(base_path('routes/web.php'));
    });
}

این کار را می توانید برای تک به تک مسیردهی ها (مثلا web یا api انجام دهید)

۲) افزودن namespace به فایل route لاراول

به هنگام تعریف یک مسیر در فایل های web.php یا api.php و ... می توانید مسیر کنترلرها را مشخص کنید:

use App\Http\Controllers\UserController; // این خط مسیر کنترلر را مشخص می کند

Route::get('/users', [UserController::class, 'index']);
// or
Route::get('/users', 'App\Http\Controllers\UserController@index');

 

1
استاد آپدیت لاراول هشت رو منتشر نمیکنید برای دوره ی لاراول ؟ – amiram234567 در
@amiram234567 در حال دیزاین و کدنویسی مجدد یک سری بخش ها هستیم به محض اتمام، دوره جدیدی برای لاراول ۸ درنظر میگیریم. – masoudsalehi در