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

السؤال

نشر

لدي المتحكم التالي:

public function store(Request $request) {

Copy
    $input = $request->validate([
        'pages_category_id' => 'required',
        'name' => 'required',
        'content' => 'required',
        'thumbnail' => 'required|image',
    ]);

    if ($image = $request->file('image'))
    {
        $destinationPath = 'image/';
        $imageName = date('Ymd') . "." . $image->getClientOriginalExtension();
        $image->move(public_path('uploads/pages' . $pages->id.'/'), $imageName);
        $input['image'] = $imageName;
    }
    
    $input['content'] = (strip_tags($request->content));
    $input = $request->all();

    Pages::create($input);

    return redirect('pages/list')->with('success', 'Success Add Page');
}

 

Recommended Posts

  • 1
نشر

يبدو أن هناك بعض الأخطاء في الكود، ولكن دعني أوضح لك كيفية حفظ الصورة في مجلد عام. يبدو أنك تستخدم Laravel، وهذا ممتاز. لكن، يجب عليك تصحيح الأخطاء التي تظهر في الكود الحالي.

الخطأ الرئيسي يتعلق بالتعامل مع الملفات وتحديد المسار الصحيح. في الكود الخاص بك، قد تكون هناك مشكلة في التعامل مع متغير `$pages`، لأنه غير معرف في السياق الحالي.

تصحيح الكود:

public function store(Request $request) {
    $input = $request->validate([
        'pages_category_id' => 'required',
        'name' => 'required',
        'content' => 'required',
        'thumbnail' => 'required|image',
    ]);

    // تحقق من وجود ملف الصورة في الطلب
    if ($image = $request->file('thumbnail'))
    {
        // حدد المسار الذي تريد حفظ الصورة فيه
        $destinationPath = 'uploads/pages/';

        // قم بتوليد اسم فريد للصورة
        // الافضل استخدام date('YmdHis') لضمان ان الاسم فريد
		$imageName = date('Ymd') . "." . $image->getClientOriginalExtension();
        
		// انقل الصورة إلى المسار المحدد
        $image->move(public_path($destinationPath), $imageName);

        // قم بتحديث قيمة الحقل 'thumbnail' في المتغير $input
        $input['thumbnail'] = $destinationPath . $imageName;
    }
    
    // لاحظ أننا قمنا بإعادة تعيين $input هنا بدلاً من أخطاء السطرين السابقين
    $input['content'] = strip_tags($request->content);

    // استخدام $input بدلاً من $request->all()
    Pages::create($input);

    return redirect('pages/list')->with('success', 'Success Add Page');
}

تأكد من أن مجلد "uploads/pages/" قابل للكتابة من قبل الخادم، وأن جميع الأذونات اللازمة متاحة. كما أننا قمنا بتحديث اسم الحقل إلى 'thumbnail'. تأكد من أن اسم الحقل يتناسب مع الحقل الذي تريد حفظ الصورة فيه في جدول قاعدة البيانات.

  • 0
نشر
public function store(Request $request) {

    $input = $request->validate([
        'pages_category_id' => 'required',
        'name' => 'required',
        'content' => 'required',
        'thumbnail' => 'required|image', // تأكد من أن هذا هو الاسم الصحيح لحقل الصورة
    ]);

    if ($image = $request->file('thumbnail')) // استخدم نفس الاسم هنا
    {
        $destinationPath = 'uploads/pages/'; // مسار الوجهة داخل مجلد public
        $imageName = date('YmdHis') . "." . $image->getClientOriginalExtension(); // استخدام وقت دقيق لتجنب تعارض الأسماء
        $image->move(public_path($destinationPath), $imageName); // حفظ الصورة في المجلد
        $input['image'] = $destinationPath.$imageName; // تحديث البيانات الواردة بمسار الصورة
    }

    $input['content'] = strip_tags($request->content);
    // $input = $request->all(); // يبدو أن هذا السطر غير ضروري

    Pages::create($input);

    return redirect('pages/list')->with('success', 'Success Add Page');
}

قم بتعديل الكود كما قمت بكتابته وسيعمل ان شاء الله

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...