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

كيف يمكنني إنشاء مجموعة من عناصر التحديد (SELECT) باستخدام حلقة foreach في Filament؟

Abdelrahman Mostafa10

السؤال

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

ولكنني لا أعرف كيفية القيام بذلك داخل المخطط، فقد تتغير خيارات التقييم المتاحة، لذا يلزم إنشاؤها ديناميكيًا.

 Section::make('Ratings')
                       ->schema([
                           
                               foreach($model->hobbyRatings()->where('parent_id',null) as $rating){
 Select::make($rating->tag)
   ->options(function (Builder $query) use ($rating) {
 return $query->where('parent_id', $rating->id)->get();
                                         });
    }
                          

                       ])
                       
                       ->columnSpanFull(),

بالإضافة إلى ما سبق، هل من الممكن أيضًا حفظ أجزاء معينة من النموذج لإدراجها في مكان آخر، مثل حقول العنوان؟

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

Recommended Posts

  • 0

عزيزي الطالب، عليك القيام بالطوات التالية:

إنشاء النموذج ديناميكيًا:

لإنشاء النموذج بشكل ديناميكي، ستحتاج إلى تكرار (loop) عبر بيانات التقييم الموجودة في قاعدة البيانات. يمكنك استخدام حلقة foreach لهذا الغرض. ومع ذلك، يجب أن تكون حذرًا لأن استخدام foreach مباشرة داخل مخطط (schema) قد لا يعمل كما هو متوقع في بعض الإطارات.

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

$formElements = [];

foreach($model->hobbyRatings()->where('parent_id', null) as $rating) {
    $formElements[] = Select::make($rating->tag)
                           ->options(function (Builder $query) use ($rating) {
                               return $query->where('parent_id', $rating->id)->get();
                           });
}

Section::make('Ratings')
       ->schema($formElements)
       ->columnSpanFull();

في هذا الكود، نقوم بإنشاء مصفوفة $formElements وملؤها بعناصر Select استنادًا إلى بيانات التقييم.

حفظ أجزاء من النموذج لإعادة استخدامها:
 

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

مثلاً، إذا كنت تريد إعادة استخدام حقول العنوان:

$addressFields = [
    
];

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...