-
المساهمات
9798 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
154
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف25
-
إذا كانت المشاريع التي تريدها تخص دروس أو أقسام في الدورة يرجى وضع كل مشروع تريده أسفل كل قسم أو درس حتى نستطيع إعطاءك المشاريع المناسبة للتقنيات التي تم شرحها في الدروس وذلك حتى تستفيد ويستفيد الطلاب الأخرون معك.
-
ستجد أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
-
نعم لكل الدورات ويمكنك قراءة التالي : https://support.academy.hsoub.com/exams
-
وعليكم السلام ورحمة الله وبركاته . في الأكاديمية هنا تم ترتيب المسارات بالشكل الذي يناسب طريقة الشرح وأيضا ليناسب مستويات الطلاب حيث تتدرج الدروس في الصعوبة وأيضا في التطبيق العملي مع التطبيقات النظرية . لهذا الأفضل دائما إتباع الترتيب الخاص بالدورة لتفادي دراسة مسارات قبل مسارات أخرى يتم الإعتماد عليها . ولكن لو كنت تريد دراسة تخصص معين وليس جميع الدورة فيمكنك حينها دراسة المسارات الخاصة بهذا التخصص . وإليك تفصيل نظام الترتيب الذي إعتمدت عليه الأكاديمية هنا وأيضا نصيحة لك لكيفية إختيار المسارات التي تريدها :
-
وعليكم السلام ورحمة الله وبركاته . ستجد أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
-
يمكنك تحديد التخصص الذي تريده في الدورة ولا يجب إنهاء كامل الدورة . ولكن على الأقل يجب عليك أن تقوم بإنهاء 4 مسارات كاملة للتقدم للإختبار . وسيتم إختبارك فقط في المسارات التي حددتها فقط وليس كامل الدورة وأيضا عند حصولك على الشهادة لن يتم وضع المسارات التي أنهيتها بل سيتم وضع أنك أنهيت الدورة بنجاح . ولتفاصيل أكثير حول الشهادة والإمتحان يمكنك قراءة التالي: https://support.academy.hsoub.com/exams
-
وعليكم السلام ورحمة الله وبركاته. نعم هذه هي المشاريع التي يجب رفعها . أى درس أو مسار تجد به كلمة تطبيق عملي أو مشروع كامل فهو من ضمن الأشياء التي يجب رفعها للتقدم للإختبار. يجب أن يتم رفعها كما هي ولكن يمكنك الإضافة بها ولكن لا يمكن إستبدال شئ مكان أخر كإستبدال مكتبات أو غيرها حيث يتم تقيمك بناء على ما تم شرحه في الدروس وما قمت به لذلك يجب أن يتم إستخدام نفس التقنيات المستخدمة في الدروس . وأيضا لا يجب تغير المسمى فيجب أن يتم تسيمة المستودع بإسم المسار وبداخله تقوم برفع المشاريع الصغيرة في هذا المسار . أما المشاريع الكبيرة تقوم برفعها في مستودع منفصل. لا ليست إلزامية ك REAME.md ولكنها من الأفضل أن تكون موجودة وبها شرح تفاصيل المشروع وكيفية تشغيله ولكن ملفات requirements.txt هي مطلوبة حتى يتم تنزيل المكتبات مباشرة منها وإلا سيكون الموضوع صعبا وتنزيل المكتبات يدويا . بالطبع لا يجب رفعه دفعة واحدة يمكنك رفعه على عدة افرع ومراحل ولكن في النهاية يجب أن يكون الفرع الرئيسي به كامل المشروع في النهاية .
- 1 جواب
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . نعم للتقدم للإختبار يجب إجتياز على الأقل 4 مسارات من الدورة وتقوم فقط بالإختبار فيهم ولو إجتزت الإختبار ستحصل على الشهادة . ونعم الدورة بها العديد من التخصصات لهذا يمكنك إختيار فقط المسارات التي توافق التخصص الذي تريده وتجاهل المسارات الأخرى . لهذا بالطبع يمكنك إكمال ال 7 أو ال 9 مسارات التي تريدها والتقدم للإختبار فيهم ومن ثم بعد الإجتياز والحصول على الشهادة يمكنك إكمال المسارات دون أى مشكلة . ولكن لا تجعل تركيزك ينصب فقط على الشهادة فالأهم هو دراستك التي حصلت عليها من الدورة لهذا إكمال الدورة للنهاية أفضل لك ولمسيرتك المهنية .
-
ما تقوم به ليس جيدا بالمرة فكل ذلك التعلم وتلك التقنيات لن تفيدك فكل هذا يندرج تحت مجالات وظيفية مختلفة ولهذا لن تستطيع أن تكون خبيرا في مجال واحد وهكذا لن تحصل على وظيفة جيدة . ولاحظ أن التعلم الفعال في البرمجة لا يعتمد على حفظ كل المصطلحات بالتفصيل بل على فهم المفاهيم العامة والقدرة على تطبيقها وإليك السبب: التركيز على المفاهيم: البرمجة مثل بناء منزل تحتاج إلى فهم لماذا مثل كيفية عمل الذاكرة في C++ أو نظام الملكية في Rust لتجنب الأخطاء وليس مجرد حفظ الأسماء فعلى سبيل المثال، في Rust مفهوم ال "ownership" يمنع مشاكل الذاكرة وفهم هذا يساعدك في لغات أخرى مثل C++ دون حفظ كل كلمة مفتاحية. الحفظ غير ضروري: المصطلحات تأتي مع الوقت عبر التكرار والتطبيق و لو حاولت حفظ كل شيء مثل جميع الدوال في OpenCV أو ال APIs في FastAPI) ستشعر بالإرهاق والملل والتشتت ولا يوجد شخص يحفظ كل هذا. وبدلا من ذلك تعلم كيف تبحث عنها عند الحاجة مثل في الوثائق الرسمية أو Stack Overflow أو على جوجل. الاستثناءات: في بعض المجالات مثل الأنظمة المدمجة أو البرمجة المنخفضة المستوى (low-level)، قد تحتاج إلى حفظ بعض المصطلحات الأساسية مثل registers في Assembly ولكن حتى هناك الأمر يدور بشكل أساسي حول الفهم العملي لا الحفظ . وأيضا كما وضحت لك أن معظم المبرمجين بما فيهم المحترفينؤلا يكتبون الكود من الذاكرة بل يستعينون دائماً بالمراجع والنسخ واللصق والأدوات وإليك كيف يعمل الأمر في الواقع: الذاكرة للأساسيات فقط فنحفظ المفاهيم الأساسية مثل كيفية كتابة loop في JavaScript أو class ولكن للتفاصيل الدقيقة نستخدم: الوثائق الرسيمة. النسخ واللصق حتى المطورين المحترفين ينسخون الأكواد من GitHub أو Stack Overflow ثم يعدلونه ليتناسب مع احتياجاتهم . أدوات المساعدة مثل ال IDEs ك VS Code تساعد بال auto-complete. وأخيرا التعلم النظري فقط دون التطبيق لن يفيدك بشئ بل يجب عليك تطبيق ما تعلمته وذلك لتثبيت المعلومات لديك وأيضا لتتأكد من فهمك للأمور فعند التطبيق حينها ستعرف هل قمت بفهم كل شئ بشكل جيد أم لا وأيضا ستعرف الأجزاء التي لديك قصور بها وأيضا ستعطيك الخبرة العملية وستفهم أكثر عند التطبيق ورؤية كل شئ يعمل أمامك.
- 3 اجابة
-
- 1
-
-
أولا لمعرفة الفرق بينهما أنصحك بقراءة المقال التالي وستفهم منه ما أوجه الفرق المختلفة بين UI و UX : وإليك المقال التالي لتعلم الخطوات اللازمة لتصميم واجهة المستخدم وتجربة المستخدم : وأنصحك بقراءة الإجابات التالية على السؤال التالي لمعرفة كيف تصبح مصمم UI و UX:
- 2 اجابة
-
- 1
-
-
إن المسار الأول الخاص بسكراتش يستهدف بصفه أساسيه من لا يوجد لديه أي أساس برمجي ولم يتعامل مع البرمجه من قبل فهو عباره عن لغة برمجة مرئية صُممت أساسا لأغراض تعليمية و نظرًا لسهولة المبادئ التي تعمل وفقها سكراتش فهي ممتازه جدا لمن لم يكن لديه أي معرفه مسبقه بالبرمجه. وإذا كنت تعرفه مسبقا وتعرف المفاهيم البرمجيه الأساسيه مثل الدوال والحلقات تكرار والجمل شرطيه والمتغيرات والعوامل وغيرها من الأساسيات فيمكنك تخطي هذا المسار ولكن أنصحك بمتابعه المسار سريعا لربما تحصل علي معلومات جديده أو يكون هذا المسار كمراجعه لك علي بعض الأساسيات حتي تكون جاهز للمسار الذي يليه. ولكن إذا لم تكن تعرف المفاهيم البرمجية الأساسية فلا ينبغي أن تتخطاه .
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . في الذكاء الإصطناعي لن تحتاج أن تكون متمكن بشكل كبير جدا في البداية في بايثون بل الأساسيات ستكون كافية جدا لك في بداية طريقك وهنا الدورة توفر أساسيات بايثون اللازمة لتستطيع البدأ في المجال دون أى مشكلة ودون تعقيد فكل ما سيتم شرحه في الدورة سيتم توفيره في الأساسيات وأثناء الدروس لهذا لن تحتاج إلى أى كورس أخر خاص ببايثون حاليا للبدأ في الدورة. أما بخصوص الرياضيات فنعم هنا لا يتم شرح الرياضيات في الدورة بشكل منفصل ومتخصص إنما يتم شرح ما نحتاجه فقط أي عندما نصل إلى جزء معين يحتاج رياضيات مثلا خوارزمية معينة مثل الانحدار الخطي يتم شرح المفاهيم الرياضية التي تقوم عليها هذه الخوارزمية كالاشتقاق و الإحصاء. وإليك طرق دراسة الرياضيات اللازمة للذكاء الإصطناعي : بخصوص هذا السؤال فالأمر يعتمد على المجال الذي تريده فالمجالين منفصلين تماما أنصحك بدراسة الذكاء الإطناعي أولا إذا أردت العمل في هذا المجال وبعدها يمكنك مشاهدة دورة تطوير الويب بعد ذلك إذا إحتجت للعمل على إنشاء تطبيقات الويب والمواقع.
-
أولا أفضل شئ أراه مناسبا للتعلم في CSS وأن تكون واثقا من نفسك فيها ومتمكن وصاحب خبرة هي أن تقوم بإنشاء والتدرب على مشاريع كثيرة وأن تقوم مثلا بالبحث عن موقع تراه مناسبا وتقوم بتقليده وإليك الإجابة التالية لمعرفة كيفية التطبيق على CSS والتأكد من فهمك له : وهذا الشعور الذي لديك هو طبيعي جدا ويمر به أغلب المطورين، حتى ذوي الخبرة. فلغة CSS تبدو سهلة في البداية ولكن عند التعمق تصبح معقدة لأن القواعد تتداخل بطرق غير متوقعة. وإليك الأساسيات التي يجب عليك فهمها والتركيز عليها : فهم الصندوق والتدفق (The Box Model & Flow) : فأغلب مشاكل التصميم تأتي من عدم فهم كيفية تعامل المتصفح مع العناصر كصناديق. Box Model: افهم جيداً الفرق بين margin و border و padding والأهم هو خاصية box-sizing: border-box وكيف تحل لك مشاكل الحجم الزائد. Display Types: افهم الفرق الجوهري بين block و inline و inline-block وكيف يؤثر كل منهم على العناصر المجاورة. Positioning: متى تستخدم relative و absolute و fixed و sticky وهذا هو مفتاح التحكم في وضع العناصر فوق بعضها أو تثبيتها. --------------------------------------------------------------------------------------------------------------------------------- إتقان أدوات التخطيط الحديثة (Layout Systems) توقف عن استخدام float للتخطيط وركز على: Flexbox: هو الأهم حاليا لترتيب العناصر في اتجاه واحد (صف أو عمود). تعلم كيف تظبط المحاذاة (justify-content و align-items). CSS Grid: لعمل تخطيطات معقدة ثنائية الأبعاد (صفوف وأعمدة معا). وإذا أتقنت Flexbox جيداً ستحل 80% من مشاكل التنسيق التي تواجهك. --------------------------------------------------------------------------------------------------------------------------------- التخصيص والأولوية (Specificity & Cascade) يجب عليك فهم كيف يقرر المتصفح أي تنسيق أو يطبقه إذا تعارضت التعليمات وتعلم حساب النقاط مثلا ال ID أقوى من Class وال Class أقوى من Tag. وتجنب استخدام ال !importan إلا في أضيق الحدود لأنها تدمر تسلسل الكود. --------------------------------------------------------------------------------------------------------------------------------- التجاوب ووحدات القياس (Responsive Design & Units) لكي يعمل تصميمك على الموبايل واللابتوب بنفس الكفاءة: Units: قلل من استخدام البكسل px. تعلم استخدام الوحدات النسبية مثل rem للنصوص و % أو vw/vh للأبعاد. Media Queries: تعلم كيف تغير التنسيق بناءً على حجم الشاشة (Mobile First approach).
-
أولا مكتبات الأنيميشن المتوافقة مع React : Framer Motion وهي الأفضل ل React: ومن مزاياها أن لها تصميم API خاص ب React وسهلة التعلم وأنيميشن متقدمة. React Spring (للأنيميشن الفيزيائية) : من مزاياها أن الأنيميشن قائمة على الفيزياء على أداء عالي. ومثالية للتحويلات الطبيعية والقفزات والتدوير. GSAP مع React : من مزاياها أن لك تحكم كامل وأنيميشن معقدة . ثانيا أنيميشن مع Tailwind CSS : يوجد أنيميشن مدمجة في Tailwind وهي ممتازة : <!-- أنيميشن أساسية --> <div class="animate-spin">⏳</div> <div class="animate-pulse">💗</div> <div class="animate-bounce">🏀</div> <!-- انتقالات --> <button class="transition duration-300 ease-in-out hover:scale-110"> Moving Button </button> ثالثا أنيميشن مع Bootstrap : Animate.css وهي مكتية كلاسيكية مع Bootstrap : رابعا مكتبات متخصصة في ذلك بشكل منفصل : AOS (Animate On Scroll) وهي ممتازة في الأنيميشن عند التمرير وسهلة الاستخدام. Swiper.js للسلايدرز
-
عندما يتم تحديث الدورة في الأكاديمية هنا يتم تحديث المسار بأكمله ويتم نقل المسار القديم إلى "أرشيف المسارات الأقدم" والمسارات الجديدة يتم وضعها مكان المسارات القديمة ويتم حذف وقت المسار القديم وإضافت وقت المسار الجديد . وعند تحديث المسار يتم تحديث طريقة الشرح وحذف التقنيات القديمة الغير مهمة وإضافة مكانها التقنيات الأحدث والإصدارات الأحدث ولهذا من الممكن أن يختلف الوقت بسبب تحديث طريقة الشرح والإصدارات المختلفة . وإذا أردت مشاهدة المسارات القديمة ستجدها في نهاية الدورة في قسم "أرشيف المسارات الأقدم". ويمكنك مشاهدة أى تحديث حدث في الدورات وتفاصيل عنه من خلال الرابط التالي : https://academy.hsoub.com/release-notes/
-
حاليا تعلم Jquey ليس ذو اهمية فأطر العمل الحديثة أفضل بكثير في هذا الأمر من ناحية الأداء والسرعه والسهولة . ولكن بالطبع من الممكن أن تتعامل مع مواقع قديمة ما زالت تعتمد عليه أو عندما تقوم ببناء مواقع ثابته فهنا الأفضل إستخدام JQuey بدلا من جافاسكريبت
- 3 اجابة
-
- 1
-
-
إن أول 13 مسار في خارطة الطريق التي تم وضعها هي كما في محتوى "دورة علوم الحاسوب" . ويوجد كورس مجاني يسمى CS50 المقدم من جامعة هارفارد وهو مشترك في أغلب الأشياء المقدمة في خارطة الطريق ودورة علوم الحاسوب وهذا الأمر مفيد جدا حيث سيعطيك أساس قوي في البدأ في المجال . وإليك الإجابة التالية لمزيد من التفاصيل حول كورس CS50 : ولو بدأت بأول 13 كورس في خارطة الطريق التي تم توضيحها في الموقع فسيكون الأمر ممتاز وسيعطيك أفضلية في التعلم والتفكير المنطقي ولكن هذا الأمر للأشخاص المبتدأين تماما والذين ليس لديهم أى خبرة مسبقة في البرمجة فلو كان لديك خبرة مسبقة فالأفضل لك مشاهدة الدورات التي أنت مشترك بها وبعد ذلك يمكنك مشاهدة فيديوهات عن : هياكل البيانات الخوارزميات البرمجة كائنية التوجه OOP
-
هل لديك برنامج حماية من الفايروسات ؟ حيث من الممكن أنه يمنع الإتصال . قم بحذف Node من جهازك نهائيا وقم بحذف المجلدات لتالية بعد إزالته : C:\Program Files\nodejs C:\Users\YOUR_USER\AppData\Roaming\npm C:\Users\YOUR_USER\AppData\Roaming\npm-cache وفي متغيرات البيئة قم بحذف أى شئ يشير إلى node او npm وقم بإعادة تشغيل الجهاز. وأخيرا قم بتثبيت نسخة مستقرة من node . إذا إستمرت المشكلة فإذا بشكل كبير المشكلة في النظام ويندوز لديك إما أنه حدثت مشكلة أثناء التثبيت أو توجد مشكلة في إعداد الشبكة عليه.
-
وعليكم السلام ورحمة الله وبركاته. الخطأ الذي تواجهه (Error: querySrv ECONNREFUSED) يتعلق بمشكلة في عملية الاستعلام عن سجل SRV في DNS لخادم MongoDB Atlas (mongodb.net). وهذا الخطأ لا يعني مشكلة في قاعدة البيانات نفسها أو في ال IP allow الذي قمت بتعديله إلى anywhere بل يشير إلى أن جهازك لا يمكنه الوصول إلى خادم DNS للحصول على معلومات الاتصال بالقاعدة. وبما أن المشكلة بدأت بعد فورمات الكمبيوتر وإعادة تثبيت المتطلبات فمن المحتمل أن تكون مرتبطة بإعدادات الشبكة أو DNS على الجهاز الجديد لديك. تحقق من الاتصال بالإنترنت والشبكة الأساسية: أولا تأكد من أن الإنترنت يعمل بشكل طبيعي لديك قم بتجربة الوصول إلى موقع mongodb.com من المتصفح. وإذا كنت تستخدم VPN أو proxy قم بتعطيله مؤقتا وجرب تشغيل السيرفر مرة أخرى حيث أن بعض ال VPN تمنع استعلامات DNS الخاصة ب MongoDB Atlas. ثانيا هذا الخطأ غالبا ما يحدث بسبب مشكلة في خادم DNS الافتراضي يرجى تجربة استخدام DNS عام موثوق مثل Google DNS أو Cloudflare DNS. على Windows قم: بااذهاب إلى Settings ثم Network & Internet ثم Status ثم Change adapter options. بعد ذلك انقر بزر الفأرة الأيمن على اتصال الشبكة النشط Wi-Fi أو Ethernet ثم Properties. قم باختيار "Internet Protocol Version 4 (TCP/IPv4)" ثم Properties. حدد "Use the following DNS server addresses"، ثم أدخل: Preferred DNS server: 8.8.8.8 Alternate DNS server: 8.8.4.4 أعد تشغيل الجهاز أو قم بـ flush DNS من خلال تشغيل الأمر في سطر الأوامر: ipconfig /flushdns. وأخيرا تأكد من أن الـ connection string في ملف .env أو الكود صحيح. يجب أن يكون شكله مشابها ل: mongodb+srv://<username>:<password>@cluster0.mf8buxy.mongodb.net/<dbname>?retryWrites=true&w=majority وإذا كان يحتوي على mongodb:// بدلا من mongodb+srv://، غيره إلى +srv لأن Atlas يعتمد على SRV records. وإذا كان ال username أو password يحتوي على رموز خاصة مثل (@ أو %)، قم بعمل URL encoding لها (مثل %40 بدلاً من @).
- 5 اجابة
-
- 1
-
-
مرحبا أمير . ما هو المجال الذي تريد العمل عليه ؟ هل تريد أن تصبح مطور ذكاء إصطناعي أم مطور تطبيقات الويب ؟ إذا أردت أن تصبح مطور تطبيقات الويب فإن دورة بايثون كافية للبدأ بالعمل بإستخدام لغة بايثون وإطار عمل Django و Flask ولو أردت دورة أخرى فمن رأي أفضل دورة هي "تطوير التطبيقات باستخدام JavaScript" حيث ستصبح بها full-stack أى مطور واجهة أمامية وخلفية معا وأيضا تستطيع إنشاء تطبيقات الهاتف وسطح المكتب ويمكن دمجها مع لغة بايثون حيث يمكنك إنشاء الواجهة الخلفية ببايثون والواجهة الأمامية بجافاسكيبت. أما إذا أردت أن تصبح مطور ذكاء إصطناعي أو محلل بيانات فالأفضل دورة الذكاء الإصطناعي بالطبع ولكن لاحظ أن المواضيع المشتركة ليست بشكل كامل ففي دورة تطوير التطبيقات باستخدام لغة بايثون كانت المسارات الخاصة بالذكاء الإصطناعي مختصرة وليست متعمقة لهذا سيتوجب عليك دراسة كامل دورة الذكاء الإصطناعي . يرجى أولا إختيار المجال الذي تريد العمل عليه حتى لا تتشتت وتستطيع البدأ فيه بشكل أفضل ومعمق.
- 1 جواب
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . الأمور الخاصة بالدورات يتم إتمامها من خلال محادثة مركز المساعدة ويمكنك محادثتهم من خلال الرابط التالي : https://support.academy.hsoub.com/conversations ومن الممكن أن يتأخر الرد لبعض الوقت حيث يوجد ضغط حاليا على مركز المساعدة لذلك يرجى الإنتظار قليلا لحين الرد عليك.
-
وعليكم السلام ورحمة الله وبركاته . يمكنكِ قراءة المقالات التالية لمعرفة أكثر حول تصميم الواجهات بشكل عام : أما بخصوص Figma فيمكنكِ تعلم الأساسيات من القنوات التالية ويمكنكِ إختيار الشرح المناسب لكِ:
-
بالنسبة إلى الدورة الخاصة بأكاديمية حسوب هنا فأنت لن تحتاج مذاكرة أى دروس رياضيات بجانبها حيث يتم شرح الرياضيات التي ستحتاجها في دروس الدورة وهي تتناسب في المستوى مع الطلاب لذلك يتم التدرج في شرح الرياضيات من المستوى السهل إلى المستوي المتقدم قليلا. ولكنك ستحتاج بعد إنتهاء من الدورة دراسة الرياضيات المهمة للذكاء الإصطناعي مثل الجبر الخطي وغيرها . ويمكنك قراءة الإجابات التالية لمزيد من التفاصيل حول الرياضيات المهمة لمجال الذكاء الإصطناعي :
- 4 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. إن الفكرة الأساسية في MVC تكمن في Controller (المتحكم): وهو الوسيط بين : View (النموذج/Form) Model (قاعدة البيانات + منطق العمل) ووظيفته : استقبال البيانات من ال View ($_POST, $_GET) تنظيف البيانات البسيطة التحقق من صحة الإدخال من ناحية الواجهة (Form Validation) تمرير البيانات الصحيحة إلى النموذج Model تحديد أي View يتم عرضه Model (النموذج): وهو المسؤول عن: منطق العمل (Business Logic). التعامل مع قاعدة البيانات. التحقق من البيانات المرتبطة. القواعد التي يجب ألا يتم كسرها حتى لو جاء الطلب من API . View (العرض) : ووظيفته هو عرض البيانات فقط لا تحقق و لا منطق و لا تعامل مع قواعد البيانات. نأتي للإجابة على سؤالك . النموذج والمتحكم هم الإثنان مسؤولان عن التحقق من البيانات ولكن بطريقة مختلفة. التحقق والتنظيف في Controller (التحقق السطحي) : مثل : هل الحقول فارغة. هل تم إرسال الحقل. هل الصيغة صحيحة مثل البريد الإلكتروني أو رقم. تعقيم XSS (trim, htmlspecialchars). أما التحقق في Model (التحقق العميق) : مثل: هل اسم الكتاب موجود مسبقا . هل اللغة مسموح بها في النظام. قواعد العمل (Business Rules).
-
وعليكم السلام ورحمة الله وبركاته. لا يجب عليك إنشاء صفحة جديدة للبحث حيث يجب إستخدام نفس صفحة المؤلفين فقط ستقوم بتغير البيانات حسب وجود البحث فالبحث ليس صفحة جديدة بل حالة مختلفة لنفس الصفحة . حيث أن صفحة المؤلفين والبحث نفس الواجهة (View) تقريبا والاختلاف فقط في البيانات المعروضة وإذا قمت بتكرار View إذا هذا هو كود مكرر وسيكون صيانة الكود أصعب أو تعديله . وفي ال MVC: ال View تكون واحدة و ال Controller هو فقط الذي يتحكم في المنطق. ويكون الكود شئ كالتالي : public function index() { $search = $_GET['q'] ?? null; if ($search) { $authors = $this->authorModel->search($search); } else { $authors = $this->authorModel->getAll(); } require view('authors/index', compact('authors', 'search')); } والعنوان url يكون كالتالي مثلا : /authors /authors?q=ahmed لاحظ كيف إذا عثرنا على q في العنوان إذا هنا المستخدم قام بالبحث وحينها بدلا من عرض جميع البيانات نقوم بالفلترة . وكود النموذج يكون كالتالي : <form method="GET"> <input type="text" name="q" value="<?= htmlspecialchars($search ?? '') ?>"> <button>بحث</button> </form>
