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

رسالة خطأ call to undefined method ضمن مكتبة Spatie\MediaLibrary في لارافل

Amir Alsaeed

السؤال

عندما أقوم برفع الصور إلى خادم الويب عن طريق استخدام المكتبة Spatie\MediaLibrary في لارافل، يظهر لدي الخطأ التالي:

Call to undefiend function ::toMediaCollection()

وهذا هو الكود لدي:

 public function update(Request $request, Channel $channel)
     {
        if($request->hasFile("image")){
          $blog->addAllMediaFromRequest('image')->toMediaCollection('images');
        }
     }

والمودل المرتبط بها:

use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use App\User;

class Blog extends Model implements HasMedia
{
    use HasMediaTrait;
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

ترجع دالة addAllMediaFromRequest() مجموعة من الوسائط المضافة حديثًا.

تحتاج إلى تكرار كل ملف مضاف لإضافته إلى collection. بهذا الشكل 

$blog->addAllMediaFromRequest('image')
    ->each(function ($fileAdder) {
        $fileAdder->toMediaCollection('images');
    });

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

- أولا قم بالتأكد أنك تستعمل الTrait الصحيح ففي النسخة الثامنة من المكتبة تم تغيير الtrait من HasMediaTrait الى InteractsWithMedia .
فيكون هكذا : 

<?php 

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;

class myModel extends Model implements HasMedia
{
    use InteractsWithMedia;
  
    // use HasMediaTrait; تم التخلي عنه

}

و بكل حال من الاحوال , لا يزال عليك تخصيص وسط واحد فالدالة toMediaCollection معرفة بكلاس الوسط في حين أنك تقوم بتطبيقها على مجموعة من الوسائط و بطبيعة الحال فان الدالة غير معرفة على هذا النحو و سيتم رمي خطأ حالما قمت باستدعاءها .
و كحلان مقترحان يمكنك :  
1 . اما تخصيص وسط واحد و تطبيق الدالة toMediaCollection عليه و ذلك بـ : 

<?php 

public function update(Request $request, Channel $channel)
     {
        if($request->hasFile("image")){
          // بدل هذا 
          // $blog->addAllMediaFromRequest('image')->toMediaCollection('images'); 
          
          // قم بهذا 
          $blog->addMediaFromRequest('image')->toMediaCollection('images'); 
        }
     }

?>

وهذا بحالة ما كنت تقوم برفع وسط واحد على الاكثر

2 . تطبيق دور حول مجموعة الوسائط و تطبيق الدالة على كل منها مثل ما هو موصوف بالتعليق السابق , وهذا بحالة ما كنت تقوم برفع مجموعة وسائط , أي اثنان فأكثر .

تم التعديل في بواسطة Adnane Kadri
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...