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

لوحة المتصدرين

  1. Sara Mohammed9

    Sara Mohammed9

    الأعضاء


    • نقاط

      6

    • المساهمات

      33


  2. Adnane Kadri

    Adnane Kadri

    الأعضاء


    • نقاط

      5

    • المساهمات

      5196


  3. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      4

    • المساهمات

      13209


  4. Hadi255

    Hadi255

    الأعضاء


    • نقاط

      3

    • المساهمات

      31


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 07/05/23 في كل الموقع

  1. عندي صفحة ادمن يتم فية الاضافة الى جدول المستخدمين الذي يشمل كل مستخدمين النظام ومن تم يتم اضافة الاشخاص الى جدولهم اذا كان طبيب يتم اضافتة الى جدول المريض وجدول المستخدين واذا كان طبيب يتم اضافتة الى جدول الاطباء والمستخدمين وهكذا , كيف بتتم الاضافة بلغة php
    2 نقاط
  2. السلام عليكم ورحمة الله وبركاته لماذا لم يشتغل الناتج وماهو الاقواس التي وضعها المدرب عندما استخدم امر alert؟ وماهي المشكلة الموجودة لدي (دورة JS)
    2 نقاط
  3. def search(self): con = pymysql.connect(host='localhost',user='root',passwd='',database='abozaid') cur = con.cursor() cur.execute("SELECT * FROM employee WHERE " + str(self.se_by.get())+" like'% "+str(self.se_var.get())+"%'") rows = cur.fetchall() if len(rows) !=0: self.student_table.delete(*self.student_table.get_children()) for row in rows: self.student_table.insert("",END,values=row) con.commit() con.close()
    1 نقطة
  4. انا اعمل علي تطوير موقع الذي بعد انهائه ساخذ الشهاده. انا خلصت الموقع كله بس في خاصيه مش عارف اضيفها هيا ان لما ال user يضغط علي ال like button يضيف like ولما يضغط تاني يمسح ال like انا عملته في ال backend عملت 2 endpoints واحده /like والتانيه /unlike وهما شغالين تمام بس المشكله في ال front end. ممكن مساعده علشان بقالي اكتر من يوم بحاول ومش عارف
    1 نقطة
  5. لما ارسل لجدولين مربوطين ب foreign key يطلع لي هذا الايرور Cannot add or update a child row: a foreign key constraint fails (`hospital`.`doctor`, CONSTRAINT `u_id` FOREIGN KEY (`user_id`) REFERENCES `employes` (`U_id`) ON DELETE RESTRICT ON UPDATE RESTRICT)
    1 نقطة
  6. السلام عليكم ورحمة الله وبركاته ارغب بعمل منصة تدريس عن بعد بحيث في كل صف يقوم المدرس بعمل بث فيديو ويشارك سطح مكتبه مع الطلاب هؤولاء الطلاب يقوموا ايضا تشغيل كاميرا نفس فكرة microsoft team او زووم هو ممكن نعمل هالشيئ من خلال webrtc لم ادرسه بعد والاهم من ذلك لدي قلق قابيله التوسع عندما يزيد الضغط بحثت عن بديل وجدت في امازون amazon kinesis video streams بنفس الوقت صابني قلق من الاسعار محتار ماذا اختار وكيف استطيع انشاء منصة تبث فيديو 1000 شخص كبداية كالتالي: كل صف فيه تقريبا متوسط 20 طالب هؤولاء طلاب والمدرس يقوم بفتح كاميرا + المدرس يشارك سطح مكتبه ايضا القدرة على السماح للمدرس انشاء جروبات فرعيه بداخل الصف مثلا يضع طالبين او اكثر مع بعض للمناقشه خلال فتره زمنيه مدة المحاضره ساعتين مع قدرة المدرس على تسجيل المحاضره هذا ماعدى جلسات الاجتماع بحيث يتم جمع بحدود 100 الى 200 طالب يستمعون لمحاضر على انه ندوة تثقيف وهذه الامور هذه جلسات ممكن بالاسبوع مره واحده هل تنصحوني استخدم خدمة amazon kinesis video streams ؟ لكني لم افهم الاسعار وكم يكلفني 1000 طالب شهرياً كبدايه العدد هذا قد يتضاعف دخلت موقع امازون ولم افهم فكرة الاسعار او تنصحوني ابدء برمجة webrtc لكن هنا كيف اقوم بتجهيز السيرفر بحيث يتوسع عند الحاجه فقط ولايكلفني الكثير $$ هل برايكم الفرق كبير مادياً مابين amazon kinesis video streams + webrtc سالت chatgpt نصحني في خدمة امازون صراحه اقنعني انه ماتفكر بالصيانه ولا تفكر قابيله التوسع تدفع فقط عند الاستخدام لكنه قال 1000 طالب تدفع عليهم شهريا بحدود 100$ بشوف السعر مقبول لكن السعر هذا ليس اكيد ممكن اكثر اتمنى اسمع نصائحكم بهذا المجال او يوجد حلول بديله وافضل شكرا لكم
    1 نقطة
  7. السلام عليكم هل يمكنكم مساعدتي في اضافة الاعلانات داخل تطبيق flutter و تحديدا اعلان المكافئة و شكرا
    1 نقطة
  8. يمكننا إنشاء ملف جاسكربت (أضع فيه custom directives) و تصديره، ثم استيراده في ملف main.js بسهولة في vue 2. لكني لم أنجح في ذلك في vue 3 ، حيث أني استطعت أن أصدر الدالات (functions) في ملف directives.js إلى main.js وعملت الأكواد فيها، لكن custom directives لم تعمل ، وكأنها غير موجودة . في ملف directives.js المنشأ : // directives.js import { createApp } from 'vue' import App from './App.vue' const app = createApp(App) // global Custom Directive export default function glob() { app.directive('globalexternal', { mounted: function (el) { el.placeholder = 'Global Custom Directive from external file' } }) console.log('Global Custom Directive from external file') } و في ملف main.js الأساسي : // main.js import glob from './directives' glob(); وفي ملف App.vue مثلاُ : // App.vue <input v-globalexternal style="width: 370px" /> النتيجة أن الأمر console.log('Global Custom Directive from external file') قد تم بنجاح ، لكن <input v-globalexternal style="width: 370px" /> لم يعمل v-globalexternal . هل من لديه تجربة في ذلك ؟
    1 نقطة
  9. اذا تم الاضافة الى جدول معين كيف يتم استعراض id حقة في نفس الصفحة الذي تم الاضافة فيها ,التقنية المستخدمة php
    1 نقطة
  10. المشكلة هي استخدام دالة str() للتحويل إلى سلسلة نصية في الجزء التالي: str(self.se_by.get())+" like'% "+str(self.se_var.get())+"%'" ويفترض أن self.se_by.get() و self.se_var.get() تعيدان قيمة عددية أو سلسلة نصية، وإذا كانت تلك القيم تعود بالفعل كسلاسل نصية، فلن تحتاج إلى استخدام str() مرة أخرى. لذا، عليك بتعديل السطر التالي: cur.execute("SELECT * FROM employee WHERE " + str(self.se_by.get()) + " like '% " + str(self.se_var.get()) + "%'") إلى: cur.execute("SELECT * FROM employee WHERE " + self.se_by.get() + " like '%" + self.se_var.get() + "%'") وبالتالي لن يتم تحويل القيم إلى سلاسل نصية مرتين، ويتم تكوين استعلام SQL بشكل صحيح.
    1 نقطة
  11. كل من WebRTC و Amazon Kinesis Video Streams هي خيارات جيدة، ولكن تقنية WebRTC هي تقنية مجانية ومفتوحة المصدر تسمح بالاتصال في الوقت الحقيقي بين جهازين أو أكثر، وقابلة للتوسع بشكل كبير، لكن يمكن أن تكون معقدة في إعدادها وصيانتها. بالمقابل، Amazon Kinesis Video Streams هي خدمة تديرها Amazon تجعل من السهل بث وتخزين بيانات الفيديو، أيضًا قابلة للتوسع، لكنها قد تكون أكثر تكلفة من WebRTC تبعًا لطريقة الإعداد والاستخدام. تعتمد تكلفة Amazon Kinesis Video Streams على كمية البيانات التي ستسخدمها، وكما ذكرت أنت التكلفة لـ 1000 طالب، تترواح ما بين 100 إلى 200 دولار في الشهر، وقد تزيد التكلفة إذا تم تدفق المزيد من البيانات أو إذا كنت بحاجة إلى تخزين البيانات لفترات أطول. وفيما يلي بعض العوامل التي يجب مراعاتها عند اختيار بين WebRTC و Amazon Kinesis Video Streams: التوسع كلا من WebRTC و Amazon Kinesis Video Streams قابلة للتوسع، لكن WebRTC يمكن أن تكون أكثر صعوبة في التوسع لعدد كبير من المستخدمين. التكلفة Amazon Kinesis Video Streams أكثر تكلفة من WebRTC، لكنها أيضًا أسهل في الإعداد والصيانة. الميزات WebRTC يوفر مجموعة أوسع من الميزات من Amazon Kinesis Video Streams، مثل إمكانية مشاركة الشاشة واستخدام اتصالات ند لند. وفي حال كنت قلقًا بشأن قابلية التوسع والتكلفة، فإن Amazon Kinesis Video Streams خيار جيد، وبالرغم من ذلك، إذا كنت بحاجة إلى مجموعة أوسع من الميزات، فعليك بالنظر إلى استخدام WebRTC. وإليك بعضالحلول البديلة الأخرى التي قد ترغب بأخذها في الإعتبار: Zoom Google Meet Microsoft Teams
    1 نقطة
  12. استفسارك صائب وفي محله، ولكن كلتا الطريقتين تمتلك ميزات تختلف بها عن الأخرى، بحيث أن تعلم تقنيات الويب آر تي سي: يمكنك من إنشاء أنموذج مصغر MVP يتم التوسع فيه مستقبلا يخدم معايير مثل قابلية التوسع وقابلية التخصيص والصيانة وما الى ذلك. يغنيك من امتلاك ميزات جانبية لا تخدم حالات استخدام معينة لديك، بحيث يكون تطوير النظام موجها بحالات الاستخدام التي لديك. خيار مجاني وسهل. في حين أن استعمال خيارات جاهزة لبث الفيديوهات من مثل الذي ذكرت يعطيك: اختصارا للوقت والجهد الماما بميزات عدة قد يأخذ العمل عليها منك وقتا التخلص من مشاكل الصيانة والمتابعة الدورية أجد أيضا أن مبالغ الاشتراكات المطلوبة مرتفعة قليلا مقابل مثل هاته الخدمات، قد يكون من الصائب البحث عن بدائل أقل كلفة. نذكر مثلا: Google Cloud Pub/Sub Azure Media Services Wowza Streaming Engine IBM Watson Media عن نفسي، كنت لأفضل اعتماد اشتراك مؤقت ضمن أي خدمة مدفوعة من الخدمات المذكورة أعلاه لاختبار تجربة العملاء، وفي نفس الوقت العمل بشكل موازي على أنموذج خاص بكم يتم تطويره كمنتج مستقل تماما، وأخيرا اعتماده بشكل تدريجي والتطوير فيه مستقبلا. خصوصا وأن حالة الاستخدام المراد خدمتها ها هنا بسيطة تقريبا، فأنت تبحث عن بث فيه مشاركة للشاشة والمايكات فقط. بل وحتى أن اعتماد Google meet للقيام بمثل هاته الاجتماعات يعد خيارا جيدا، فهو في الأخير يخدم حالة الاستخدام المراد العمل عليها. خذ الأمر بسلاسة ومرونة، ركز فقط على انشاء برمجيات تستوفي شروط الشيفرة النظيفة كل شيء فيها قابل للاستبدال، الصيانة، التوسع والتطوير. وكل شيء سيكون بسيطا.
    1 نقطة
  13. هذا مثال على كيفية القيام بذلك في react : import React, { useState } from 'react'; function LikeButton() { // استخدام useState لتتبع حالة الإعجاب const [liked, setLiked] = useState(false); // دالة للتعامل مع النقر على الزر const handleLike = async () => { // إذا كان المستخدم قد قام بالإعجاب مسبقًا if (liked) { // قم بإلغاء الإعجاب عن طريق الاتصال بمسار /unlike في الخلفية await fetch('/unlike', { method: 'POST' }); } else { // قم بالإعجاب عن طريق الاتصال بمسار /like في الخلفية await fetch('/like', { method: 'POST' }); } // تحديث حالة الإعجاب setLiked(!liked); }; return ( // إنشاء زر وتعيين handleLike كدالة للتعامل مع النقر عليه <button onClick={handleLike}> {/* تغيير نص الزر استنادًا إلى حالة الإعجاب */} {liked ? 'Unlike' : 'Like'} </button> ); }
    1 نقطة
  14. تطبيقاً على التعليق السابق لفهم أهمية استخدام undefined إليك مثال حول استخدام قيمة "undefined" في دالة: function addNumbers(a, b) { if (typeof a === 'number' && typeof b === 'number') { return a + b; } else { return undefined; } } console.log(addNumbers(2, 3)); // الناتج: 5 console.log(addNumbers(2, '3')); // الناتج: undefined في هذا المثال، لدينا دالة تسمى "addNumbers" تستقبل معاملين "a" و "b". تقوم الدالة بفحص ما إذا كان كل من المعاملين من نوع "number". إذا كانا كذلك، تقوم الدالة بجمعهما معًا وإرجاع النتيجة. ومع ذلك، إذا كان أي من المعاملين ليس من نوع "number"، فستعيد الدالة قيمة "undefined". في الاستدعاء الأول لـ "addNumbers"، قمنا بإرسال الأرقام 2 و 3، وستعيد الدالة النتيجة المتوقعة 5. في الاستدعاء الثاني، قمنا بإرسال الرقم 2 والسلسلة '3'. نظرًا لعدم كون المعامل الثاني رقمًا، ستعيد الدالة قيمة "undefined". هذا مثال واحد فقط على كيفية استخدام قيمة "undefined" في دالة لمعالجة المدخلات غير المتوقعة وتجنب الأخطاء.
    1 نقطة
  15. عند وضع prompt لم يعد يعمل includes ,indexOf كيف يمكنني معالجة المشكلة
    1 نقطة
  16. هل تقصد بحسب التوثيق الرسمي؟ لا يتوفر ذلك. هي مجرد طريقة لاستعمال التابع directive وللتعامل مع واجهة التطبيق البرمجية لكائن Vue فقط، ابحث عن how to register global directive in vue js وستجد أمثلة مشابهة.
    1 نقطة
  17. تماماً لأن تعريف الموجه كان app.directive لكن سؤالي الآن أين يوجد جوابك لم أجده في مكان ؟ هل استنتجته استنتاجاً أم يوجد شبيه له في مكان ما ؟
    1 نقطة
  18. مشكلتك تحديدا كانت في أنك قد أنشات نموذج Vue في حين أنك قد قمت بتهيئة الموجه directive في Vue instance آخر تماما. // directives.js // first vue instance const app = createApp(App) و: import glob from './directives' glob() // main.js // second vue instance const app = createApp(App) وبما أن الثاني هو ما يتم عمل mount له مع المكون الجذر app# فلن يتم بطبيعة الحال التعرف على الأول، وبالتالي لن يتم تسجيل الموجه أبدا.
    1 نقطة
  19. حسن، فيما يلي الطريقة الصحيحة لذلك: عدل ملف directives.js ليصبح: const globalexternal = { mounted: function (el) { el.placeholder = 'Global Custom Directive from external file' } } export default globalexternal; في ملف main.js قم باستيراد الموجه وسجله باستعمال التابع directive: import globalexternal from './directives' const app = createApp(App) app.directive('globalexternal' ,globalexternal) app.mount('#app') استعمل الموجه في أي ملف فرعي: <input v-globalexternal style="width: 370px" />
    1 نقطة
  20. نفس الخطأ لم يتغير شيء لا يوجد أخطاء من هذه النواحي فالكود نفسه يعمل عندما أكتبه في ملف main.js
    1 نقطة
  21. لا أظن أن هنالك تغيير من حيث استعمال الموجهات directives ما بين vue 3 و vue 2 . يحتمل أن يكون ذلك بسبب استعمال الخطاف mounted، جرب استعمال beforeMount أو created: app.directive('globalexternal', { created: function (el) { أيضا قد تكون المشكلة بسبب طريقتك في الوصول الى الخاصية placeholder، فالعنصر المستقبل كمعامل أول el هو عنصر DOM الذي يتم ربطه بالموجه bound element. جرب استعمال السياق التالي: mounted: function (el) { el.setAttribute('placeholder' ,'Global Custom Directive from external file') }
    1 نقطة
  22. عندي صفحتين مربوطتين مع بعض , صفحة الدكتور فيها المرضى وفحص المريض يتم ارسال فحص المريض الى جدول التشخيص واذا كان الشخص مرقد يتم ارسال البيانات ايضا الى جدول الترقيد مع وجود الid حق جدول التشخيص ...كيف يتم الارسال الى الجدولين بااستخدام php علما ان الكود الذي استخدمتة ولكن يتم الارسال الى جدول التشخيص فقط if(isset($_POST['save'])) { $doctor_id = $_SESSION["D_id"]; $nut_id=$_POST['nut_id']; $p_id=$_POST['pat_id']; $date = $_POST['date']; $diabetess = $_POST['diabetess']; $fats_checkup = $_POST['fats_checkup']; $hypertension = $_POST['hypertension']; $dia_description = $_POST['dia_description']; $med_description = $_POST['med_description']; $dia_id = $_POST['dia_id']; // Check if the allergy checkbox is checked if (isset($_POST['allergy-check']) && $_POST['allergy-check'] == 's1') { $allergy = $_POST['allergy_area']; } else { $allergy = ''; } if (isset($_POST['state'])) { $states = $_POST['state']; } if (isset($_POST['if_need_admitting']) && $_POST['if_need_admitting'] == 'yes') { $dormitory = $_POST['dormisory']; $number_room = $_POST['number_room']; // Insert the patient data into the database $sql = "INSERT INTO diagnosis (doctor_id, nutrition_id, patient_id, date, diabetess, state, fats_checkup, hypertension, allergy, dia_description, med_description) VALUES ('$doctor_id', '$nut_id', ' $p_id', '$date', '$diabetess', '$states', '$fats_checkup', '$hypertension', '$allergy', '$dia_description', '$med_description')"; // $sql2 = "INSERT INTO admit (dia_id, nut_id, dormitory, room) VALUES ( '$dia_id', '$nut_id', '$dormitory', '$number_room')"; $result = mysqli_query($conn, $sql); $result2 = mysqli_query($conn, $sql2);
    1 نقطة
  23. بخصوص odoo ستجد ما تريده في المحتوى الأجنبي أرشح لك قناتي odoo mates و Odoo Discussions وأيضًا يوجد قائمة مفيدة باسم Odoo Website & E-Commerce في قناة Concept Solutions. أيضًا قناة odoo الرسمية بها شروحات مفيدة، ابحث مثلاً عن Build an ecommerce website with Odoo. أيضًا يوجد المستند الرسمي: https://www.odoo.com/documentation/16.0/developer/tutorials.html وتستطيع البحث في جوجل عن المزيد.
    1 نقطة
  24. كيف يمكنني ارجاع الدورة ان اردت ذلك
    1 نقطة
  25. إذا كنت تريد إضافة إعلانات المكافئة (Rewarded Ads) ، يمكنك استخدام حزمة `google_mobile_ads` التي توفرها جوجل. يتضمن تطبيق Flutter الخاص بك بالفعل الحزمة `google_mobile_ads` كجزء من ملف `pubspec.yaml`. ولكن يجب عليك تسجيل حساب مطور في AdMob وإعداد وحدة إعلانية من نوع Rewarded Ads في حساب AdMob الخاص بك. بعد تهيئة وحدة الإعلانات المكافئة، يمكنك إضافة الإعلان إلى تطبيق Flutter الخاص بك باستخدام كود يشبه هذا: import 'package:google_mobile_ads/google_mobile_ads.dart'; class RewardedAdWidget extends StatefulWidget { @override _RewardedAdWidgetState createState() => _RewardedAdWidgetState(); } class _RewardedAdWidgetState extends State<RewardedAdWidget> { RewardedAd? _rewardedAd; @override void initState() { super.initState(); _createRewardedAd(); } void _createRewardedAd() { RewardedAd.load( adUnitId: RewardedAd.testAdUnitId, request: AdRequest(), rewardedAdLoadCallback: RewardedAdLoadCallback( onAdLoaded: (RewardedAd ad) { setState(() { _rewardedAd = ad; }); }, onAdFailedToLoad: (LoadAdError error) { print('RewardedAd failed to load: $error'); }, ), ); } void _showRewardedAd() { if (_rewardedAd == null) { print('RewardedAd not yet available.'); } else { _rewardedAd!.fullScreenContentCallback = FullScreenContentCallback( onAdShowedFullScreenContent: (RewardedAd ad) => print('RewardedAd opened.'), onAdDismissedFullScreenContent: (RewardedAd ad) { print('RewardedAd closed.'); ad.dispose(); _createRewardedAd(); }, onAdFailedToShowFullScreenContent: (RewardedAd ad, AdError error) { print('Failed to show RewardedAd: $error'); ad.dispose(); _createRewardedAd(); }, ); _rewardedAd!.show( onUserEarnedReward: (RewardedAd ad, RewardItem reward) { print('User earned reward: ${reward.amount} ${reward.type}.'); }, ); _rewardedAd = null; } } @override void dispose() { _rewardedAd?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return ElevatedButton( onPressed: _showRewardedAd, child: Text('Show RewardedAd'), ); } } هذا الكود يقوم بتحميل الإعلان المكافئة وعرضه عند الضغط على `ElevatedButton`. عند النقر على الإعلان، سيتم استدعاء دالة `onUserEarnedReward()` ويمكنك تحديد مكافأة مخصصة للمستخدم، مثل إضافة عملة افتراضية أو إعطاء المستخدم وصولًا إلى محتوى مخصص. لا تنسَ تغيير `adUnitId` إلى وحدة الإعلان المكافئة الخاصة بك عند الاستعداد لإطلاق التطبيق الخاص بك. أتمنى لك التوفيق في إضافة الإعلانات المكافئة إلى تطبيق Flutter الخاص بك!
    1 نقطة
  26. السلام عليكم اخوتي شكرا لردودكم حقيقة انا اعرف ان مكتبة React موجودة ضمن دورة اخرى وللاشتراك بها يجب تحمل اعباء مالية اضافية فإذا امكن تتكرمون علينا ووضعها في نهاية دورة تطوير واجهات المستخدم ضمن اي تحديث قادم للدورة كونها مرتبطة بالـ(Front End) كما تم سابقا في تحديث الدورة حيث اضيفت مواضيع جديدة مثل (fetch API) وغيرها شكرا مرة اخرى واذا لا يمكن إضافة منهاج مكتبة React ضمن تحديثكم للدورة تطوير واجهة المستخدم ساحاول مضطرا الاشتراك في دورة تطوير التطبيقات باستخدام جافا سكربت عند تمكني ماليا من ذلك
    1 نقطة
  27. السبب هو التحذيرات الإعلانية (Deprecation warnings) في PHP والتي تشير إلى أن بعض الميزات أو الوظائف المستخدمة في المشروع Laravel قد تم إهمالها وقد تصبح غير مدعومة في إصدارات PHP المستقبلية، لكن في الوقت الحالي، يمكن استخدامها بدون أي مشاكل. لذلك تأكد من أنك تستخدم إصدارًا من Laravel متوافقًا مع إصدار PHP الذي تستخدمه، ومن المفترض أن تعمل معظم إصدارات Laravel على PHP 7.3 فأعلى. وعادةً ما يمكن تجاهل تحذيرات الإعلانية، ولكن إذا كنت ترغب في إيقاف ظهورها، يمكنك تعطيل تحذيرات الإعلانية عن طريق إعدادات PHP في ملف php.ini. وذلك من خلال إضافة السطر التالي: error_reporting = E_ALL & ~E_DEPRECATED الأمر سيمنع ظهور جميع تحذيرات الإعلانية في PHP، وإذا كنت تريد تعطيل تحذير محدد فقط، يمكنك استخدام دالة error_reporting() في بداية الكود وتحديد أنواع الأخطاء التي تريد تجاهلها. لكن يجب الإنتباه إلى أن تعطيل تحذيرات الإعلانية يمكن أن يؤدي إلى عدم تحذيرك من وجود أخطاء في الكود. وإذا استمرت المشكلة في الظهور عند تشغيل مشروع Laravel الخاص بك، يمكنك محاولة تحديث Laravel وجميع المكتبات الخاصة به إلى أحدث الإصدارات، وذلك بتشغيل الأمر التالي في وحدة التحكم: composer update
    1 نقطة
×
×
  • أضف...