عام

برمجة لوحة التحكم – الجزء 3

بعدما انتهينا من برمجة لوحة التحكم الجزء 1 || برمجة لوحة التحكم  الجزء 2
نبدأ اليوم بإنشاء صفحات لوحة التحكم وسنتعرف على متطلبات انشاء صفحة لكل جدول فى قاعدة البيانات وإجراء العمليات الاساسية كالانشاء والعرض والحذف والتعديل وما إلى ذلك لكن مبدئيا  سنعرف ما هى متطلبات كل صفحة

 

متطلبات الصفحة فى لوحة التحكم : 

لإنشاء صفحة فى لوحة التحكم أو صفحة فى laravel بشكل عام نحتاج الى 3 أشياء

1-  إداراج موجه الصفحة فى الـ routes الخاصة بـ laravel وتحديدا ملف wep.php كما سنرى بعد قليل .

2- إنشاء ملف الController الخاص بالصفحة  وإنشاء الـ Model  .

3- إنشاء ملف الـ view وهو شكل الصفحة ويحتوى على الاكواد الخاصة بـ html و css و js ممزوجة ببعض ال php ونجعل الـ Controller يعود بها .

 

حسنا حتى لا يبدو الكلام غامضا ومبهما اريدك فقط حاليا ان تعرف انه فى كل مرة تريد انشاء صفحة جديدة بلوحة التحكم تحتاج لفعل التالى كل مرة .

 

حسنا لنبدأ بالشرح تفصيلا ، أنا الان اريد إنشاء صفحة بلوحة التحكم تسمى Movies  لإدارة الجدول وسأتبع الخطوات بالتسلسل فى الصورة السابقة

الخطوة الأولى : إداراج موَجِه الصفحة فى ملف الـ routes : 

فى هذه الخطوة نحن نريد ان نخبر Laravel باننا نريد انه عندما يتم مناداة الرابط http://localhost/mycp/public/movies  تستجيب laravel باستجابة معينة لانك اذا قمت بمناداة الرابط الان ستجد هذه الرسالة

وهى تظهر لك رسالة تخبرك فيها Laravel انها لا تستطيع عرض شىء لك لا تعرف ما المفترض ان تفعل عندما تطلب هذا الرابط !

لذلك سنذهب الى ملف web.php الموجود بمجلد routes ونفعل التالى :

ومعنى ذلك انه اذا قام المستخدم بمناداة لينك لوحة التحكم بالاضافة لـ /movies سنقوم بإرسال Hi I am movies قم بالحفظ الان ثم عاود التجربة بنداء الصفحة مرة اخرى وستجد التالى :

جميل !

الان فهمت Laravel انك تريد ارسال نص للمستخدم عندما يستدعى /movies للمستخدم وهو Hi Iam movies .. وقامت بعرضه  .

حسنا بدلا من عمل return كـ نص نستطيع عمل return لـ view اى ملف صفحة كالتالى :

و view هى ميثود تابعة للـ Laravel تقوم بالبحث فى مجلد الـ resources عن ملف بهذا الاسم بين القوسين واذا وجدتها تقوم بعرضه والملف home موجود بالفعل بشكل افتراضى عند تثبيت laravel والـ admin lte وهو ما تم عرضه فى المقالة السابقة اذا جربنا الان فى المتصفح استدعاء /movies سيظهر لنا هذا

لقد اظهر لنا صفحة الـ home 😀

لذلك الموجه الخاص بالـ laravel يوجه المستخدم نحو وجهه معينه ويعرض له شىء معين لذلك الخطوة الاول ان نفعل ذلك وكما رأيت اننا استخدمنا الـClass المسماه Route واستخدمنا الميثود get الخاصة بها يمكننا ايضا استخدام الـ method post وكذلك استخدام اى ميثود اخرى من الميثود الشائعة مع http request واذا كنت لا تفهم ما هى الmethod وال http request القى نظرة على هذا المقال ما يجب أن يعرفه كل مبرمج عن الـ Http

وبدلا من عمل الـ return نستطيع تفويض الـ action وماذا يحدث عند مناداة الـ link  لملف اخر بحيث يقوم ملف اخر اسمه ملف الـ Controller بالإستجابة وهذا هو الحاصل فى حالة الـ /home

ستجد انه فى حالة قام المستخدم بمناداة /home فسيتم تنفيذ الكود الموجود بملف HomeController وبداخل الميثود index وهذا الملف موجود بداخل المجلد app/http/controllers   تعالى معى لنلقى نظرة

 

بالتأكيد تعرف الـ OOP وستجد ان لدينا كلاس باسم HomeController يرث كلاس الـ Controller  وهناك 2 functions واحدة للكونستراكتور وسنتطرق اليها لاحقا لكن حاليا بها فى السطر 16 كود ال middleware اى ان هذا الكلاس يتطلب ان يكون المستخدم قد قام بتسجيل الدخول

وايضا ال method باسم index وهى التى تنادى من موجه web.php اذا قمت بالعودة

ستجد أن التنسيق كالتالى FileName@MethodName  اسم ملف الـ Controller الذى سنتحدث عنه فى الخطوة الثالثة ثم اسم الـ method

فمثلا اذا اردنا انه عند مناداة الرابط /home باستخدام ال method post سنضيف السطر التالى

ومعنى هذا الكلام انه عند مناداة الرابط /home باستخدام الميثود post سيقوم بالذهاب لملف الـ HomeController والبحث عن ميثود اسمها hello

لنقم بإنشائها الان  بداخل الملف .

 

واذا تم مناداة الرابط /home باستخدام الـ method post فى الـ http request سيتم مناداة hello وهكذا ان قمنا بعمل Route::put مثلا ينادى ميثود اسمها doSomething فعند مناداة الرابط /home باستخدام الـ method put سيتم تنفيذ الميثود doSomething

الان وضحت الفكرة ان ملف التوجيه يقوم بتوجيه المستخدم ناحية Action معين موجود بملف ال Controller .

 

بالإضافة الى get,post,put etc.  يوجد ايضا الـ method المسماه resource وتجعلنا نستغنى عن اغلب الmethods وتوفر لنا مجموعة من الاكشنز بسطر واحد ويكون كالتالى

 

وlaravel تفهم هذا السطر على انه اذا قمنا بمناداة /home بـ method مختلفة فى الـ http request كالـ post والـ get و ال put الخ. ستقوم بتنفيذ functions او methods مختلفة فى ملف الـ HomeConroller .

وفى الموقع الرسمى للـ laravel يوضح مثالا على ذلك بفرض اننا اذا كنا نريد التعامل مع اللينك /photos ولدينا PhotosController

فإن laravel تقوم بالتعامل مع الرابط /photos كالتالى

ومعنى الجدول السابق والمأخوذ من موقع laravel انه عند مناداة /photos باستخدام الـGET يتم البحث عن ميثود index داخل ملف الـ Controller
واذا تم مناداة /photos/create باستخدام GET سيتم البحث عن ميثود create وتنفيذها داخل ملف الـ Controller كما سترى لاحقا ونفس الكلام بالنسبة لأى link فقط استبدل كلمة photo بكلمة movies مثلا وبذلك تطبق القواعد السابقة فى الصورة  .

 

الان انتهينا من فهم موجه Laravel ووظيفته  والخطوة التى سنفعلها لانشاء صفحة الـ movies فى لوحة تحكم وهى إدارج هذا السطر فى ملف الـ wep.php الخاص بالـ route

وهذا السطر هو كل ما نحتاجه فقط سطر واحد لكن الشرح المطول السابق لجعلك تفهم كيف يعمل وحتى  يصبح العمل فى الـ controller  واضحا لك مع الـ functions الموجودة .

الان الـ MovieController غير موجود وهو ما سنتابع عمله فى الخطوة القادمة .

 

الخطوة الثانية : إنشاء ملف الـ Controller والـ Model

الان نريد أن ننشىء الـ Model وهو يشبه كلاس الـ pojo فى الـ java او كلاس الموديل العادى مجرد كلاس لتمثيل الجدول الجدول الموجود بقاعدة البيانات وسيكون اسمه Movie كذلك الـ Controller الخاص بالتحكم والموجود بملف التوجيه فى الخطوة السابقة والذى من المفترض ان يكون اسمه MovieController ويمكننا إنشاء الملفين معا باستخدام artisan الخاص بlaravel عن طريق الـ Terminal وذلك بالامر التالى

php artisan make:model Movie -cr

وعند تنفيذ هذا الامر

اذا رجعنا للملفات فى المحرر سنجد انه تم إنشاء Movie و Movie Controller

ملف الـ model باسم Movie وستلاحظ انه فارغ لكن فى الحقيقة laravel تعتبره ممثلا لجدول movies والـ model المسمى User الموجود مسبقلا يمثل جدول الـ users فى الداتا بيز وهكذا اى جدول فى الداتا بيز اخره s  اى جمع نعبر عنه بكلاس مفرد مثلا لو لدينا جدول اسمه Categories فإن laravel تعتبر الـ model المسمى Category ممثلا له إن وجد  اى باختصار الملف Movie الموجود حاليا يمثل جدول movies الموجود بال database حتى بدون ان يظهر امامك بشكل واضح انهما مرتبطين لكن مجرد وجود الكلاس Movie هنا بداخل مجلد app فان هذا الكلاس يمثل جدول الـ movies ومرتبط به بالـ database

 

إضافة الى  الـ model  تم إنشاء MovieController

وتجد انه يحتوى على العديد من الـ methods مثل index و create و store … الخ  وهى تخضع للموجه مثل ما قولنا /movies فقط بالـ GET ستنادى الـMovieController@index اى ال func اسمها index  وعند مناداة /movies باستخدام POST ستنادى الميثود store الخ.

حسنا الان لدينا ملف ال Model وملف الـ Conroller وكذلك سطر الـتوجيه موجود بملف route المسمى web.php

نقوم الان بالتجربة فى المتصفح

 

صفحة بيضاء  هل يمكن ان تتوقع الان لماذا ؟
حسنا الـ /movies تم مناداته بالـ GET وبالتالى اعتمادا على ملف التوجيه تم الذهاب لـ MovieController ومناداة المثود index وهى الان فارغة بالتالى وجدت صفحة بيضاء لانه لا يوجد retrun لأى شىء.

الان يمكنك تجربة عمل retrun لجملة او view بداخل index وهذا ما سنفعله المقالة القادمة ونقوم بعمل ملفات ال views .

السابق
برمجة لوحة التحكم – الجزء 2
التالي
برمجة لوحة التحكم – الجزء 4

اترك تعليقاً

This site uses Akismet to reduce spam. Learn how your comment data is processed.