الجزء ال4: تمرير البيانات من الController الى الView
في الحلقة الثالثة من دورة Laravel 5 تعلمنا
كيفية انشاء ملف يكون هو القالب لكل الملفات الأخرى, في هذا الدرس سنتعلم كيف نمرر
بيانات من الController الى الViews:
مافائدة هذا الدرس؟ اي لماذا نحتاج
الى تمرير البيانات من الController الى الView؟
الجواب: الController يمثل الجزء الرئيسي لتبادل العمليات مابين ال Model والViews, في هذا
الدرس سنتعلم كيف نمرر المعلومات بصورة مباشرة اي بدون استخدام قواعد البيانات فقط
انشاء متغيرات وتمريرها من الController الى الView باستخدام
احد الطرق التالية:
·
اما بتمرير المتغيرات في مصفوفة بصيغة Key=>value, كالأتي:
اول شيء نقوم بأنشاء view ونسميها
home.blade.php وداخل هذا الملف سنستدعى القالب الذي انشأناه في الدرس الماضي
كالأتي:
في ملف الController الخاص
بعملياتنا نقوم بأستدعاء الView التي انشأناها اعلاه في دالة نسميها home():
انشاء التوجيه لهذه الView في ملف الroutes كالأتي:
الناتج كالأتي:
كل الخطوات اعلاه فقط لأعداد الدرس
لهذا اليوم J والأن لنبدأ بمعرفة من اين وكيف نمرر البيانات للhome view:
أذهب الى ملف الController الذي
سيستدعي هذا الView:
وحسب الطريقة الأولى: سنمرر
البيانات عن طريق مصفوفة بها سيكون كل المتغيرات المراد تمريرها الى الView بشكل الKey=>Value :
public function home(){
$first_var = ['Part #1','Part #2','Part
#3','Part #4'];
$second_var = 'My Birthday on : 1991 / 7 /
7';
return view('pages.home',['first_var'=>$first_var,
'second_var'=>$second_var]);
}
تم تمرير البيانات كما في الصورة
اعلاه من الController الى
الView , والأن لأظهار تلك القيم الممررة في الhome view طبعاً اذا
كان المتغير عبارة عن قيمة واحدة سنقوم بطبعة مباشرةً اما اذا كان مصفوفة في هذه
الحالة سنحتاج الى انشاء حلقة تكرار لطبع كل القيم من المصفوفة:
ملاحظة: عن طبع القيم بأستخدام {{ $variable_name }} فأن القيمة في داخل هذا المتغير اذا كانت تحتوي على html tags سيتم
تجاهلها وطباعتها كجملة اي Escape:
مثال: اذا كان المتغير المرر من الController
$name = ‘<h1>Safaa</h1>’;
عند طباعته في الhome view:
{{ $name }}
سيكون الناتج:
<h1>Safaa</h1>
ولا يتم تطبيق الHTML Tags , ولكن يوجد حالات نحتاج الى عدم عمل Escape للhtml tags يمكن ذلك
بأستخدام :
{!! $name !!}
طبعاً اذا كانت القيمة المررة من
نوع مصفوفة فيجب عمل حلقة تكرار اما بأستخدام الكود الخاص بالphp كما هو في
الصورة اعلاه او بأستخدام الكود الخاص بالBlade view كالأتي:
@foreach($first_var as $var):
<h2>{{ $var }}</h2>
@endforeach
·
أستخدام دالة تسمى compact(), التي تعمل
على انشاء مصفوفة بشكل الKey=>value
, وحسب المتغيرات المزودة لها:
سأستخدم نفس الملفات فقط سأغير
بطريقة تمرير البيانات في الController بأستخدام الcompact() :
كما ترى في الصورة اعلاه عند
استخدام دالة الcompact() قمتٌ بتمرير اسم المتغيرات, والدالة بدورها
ستنشأ مصفوفة ستحتوي تلك القيم داخلها.
·
استخدام دالة with() مع تزويدها
بالقيم بشكل الKey=>value:
ملاحظة: مع دالة الwith() يمكن
تسميتها بأسم المتغير مثلاً عند تمرير القيمة $first_var ليس
بالضرورة تمرير اسم المتغير مع قيمة المتغير Key=>Value, يوجد طريقة اسهل وهي بعد كلمة with قم بتحديد
اسم المتغير وفي داخل القوس حدد قيمة المتغير مباشرةً كالأتي: withFirst_var($first_var)
حيث ان الLaravel عندما تقوم
بعملية parse ستعرف بأن بعد كلمة with هو اسم
المتغير.
لا يوجد خيار خاطئ بتمرير البيانات
من الcontroller الى view بأحدى الطرق الثلاث المذكورة اعلاه, ولكن
لكود اقل وابسط سأستخدم الدالة compact()
Comments
Post a Comment