اذهب إلى المحتوى

السؤال

نشر

لماذا بعد كل تسجيل دخول يظهر 

Illuminate\Contracts\Container\BindingResolutionException
vendor\laravel\framework\src\Illuminate\Container\Container.php:1124
Target class [App\Http\Controllers\Auth\LoginResponse] does not exist.

LARAVEL
12.53.0
PHP
8.2.29
UNHANDLED
CODE 0
500
POST
http://127.0.0.1:8000/login

Exception trace
78 vendor frames

Illuminate\Foundation\Application->handleRequest(object(Illuminate\Http\Request))
public\index.php:20

15
16// Bootstrap Laravel and handle the request...
17/** @var Application $app */
18$app = require_once __DIR__.'/../bootstrap/app.php';
19
20$app->handleRequest(Request::capture());

الخطأ الذي تواجهه:

Target class [App\Http\Controllers\Auth\LoginResponse] does not exist.

ثم اقوم بعمل في كل مرة 


php artisan config:clear
php artisan route:clear
php artisan cache:clear
ممكن تطلع علي ملف مشروع تقول لي ما هيا مشكلة 

 

هيا مكتبة jetstream في جانب forntend معتمده علي livewire او انرشيل وجانب backend تستخدم في مكتبة فورتي فاي 

Recommended Posts

  • 0
نشر

الخطأ نابع من مكتبة Laravel Fortify، ويعني أنّ Service Container في إطار Laravel يحاول العثور على كلاس اسمه LoginResponse داخل مجلد app/Http/Controllers/Auth/ لكي يحدد ماذا يفعل أو إلى أين يوجه المستخدم بعد نجاح تسجيل الدخول، ولكنه لا يجد ذاك الملف.

هل قمت بإضافة كود لتخصيص مسار التوجيه بعد تسجيل الدخول مثلاً توجيه الأدمن للوحة تحكم معينة والمستخدم العادي لمسار آخر، في حال قمت بذلك إذن نسيت إنشاء الكلاس، أو تم حذفه بالخطأ.

أما سبب أن المشكلة تختفي أحيانأ أو تتغير بعد عمل config:clear فهو أن Laravel يقوم بحفظ مؤقت Caching لإعدادات الـ Service Providers، وعند تفريغ الكاش يعيد قراءة الملفات من جديد.

بالتالي لو تريد العودة للوضع الافتراضي وهو توجيه المستخدم لمسار /dashboard العادي فتوجه إلى مجلد app/Providers/ وافتح ملف FortifyServiceProvider.php أو أحيانًا يكون في AppServiceProvider.php وابحث داخل دالة boot() أو register() عن كود يشبه:

$this->app->singleton(
    \Laravel\Fortify\Contracts\LoginResponse::class,
    \App\Http\Controllers\Auth\LoginResponse::class
);

قم بحذفه أو تعليقه، ثم حذف الكاش:

php artisan config:clear
php artisan cache:clear

ولتخصيص التوجيه بعد تسجيل الدخول فستحتاج الكلاس المفقود لتوجيه المستخدمين بناءًا على أدوارهم Roles، فقم بإنشاء مجلد Auth داخل app/Http/Controllers/ إن لم يكن موجود، وأنشئ ملف جديد باسم LoginResponse.php داخل ذلك المجلد app/Http/Controllers/Auth/LoginResponse.php وضع به التالي:

<?php

namespace App\Http\Controllers\Auth;

use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
use Illuminate\Support\Facades\Auth;

class LoginResponse implements LoginResponseContract
{
    /**
     * Create an HTTP response that represents the object.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function toResponse($request)
    {
        if (Auth::user()->role === 'admin') {
            return redirect()->intended('/admin/dashboard');
        }

        return redirect()->intended('/dashboard');
    }
}

ثم حذف الكاش:

php artisan optimize:clear

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...