Laravel/views
إنشاء الواجهات
ملاحظة: هل تبحث عن مزيد من المعلومات حول كيفية كتابة قوالب Blade؟ ألق نظرة على وثائق Blade الكاملة للبدء.
تحتوي الواجهات على HTML الذي يُقدّمه تطبيقك وتفصل منطق وحدة التحكّم/منطق التطبيق من منطق عرضك التقديمي (presentation logic). تُخزّن الواجهات في المُجلّد resources/views. قد تشبه الواجهة البسيطة المثال التالي:
<! - الواجهات مُخزّنة في resources/views/greeting.blade.php ->
<html>
<body>
<h1>Hello, {{ $name }}</h1>
</body>
</html>
كما ترى، يُوافق المّتغيّر الوسيط الأوّل المُمرّر إلى المُساعد view اسم ملف الواجهة في المجلّد resources/views. المتغيّر الوسيط الثاني هو مصفوفة البيانات التي يجب أن تُتاح للواجهة. نقوم في هذه الحالة بتمرير المتغيّر name الذي يُعرض في الواجهة باستخدام صيغة Blade. يمكن أيضًا تضمين (nesting)الواجهات ضمن مُجلّدات فرعية من المُجلّد resources/views. يمكن استخدام الترميز "نقطة" للإشارة للعروض المتداخلة (nested). مثلا، إن خُزّن عرضك في resources/views/admin/profile.blade.php، يمكنك الإشارة إليه (reference it) على النحو التالي:
return view('admin.profile', $data);
تحديد إن كانت الواجهة موجودة
إن كنت بحاجة لتحديد إن كانت الواجهة موجودة، يمكنك استخدام الواجهة الساكنة View (أي View facade). سيرد التابع exists بالقيمة true إن وُجدت الواجهة:
use Illuminate\Support\Facades\View;
if (View::exists('emails.customer')) {
//
}
إنشاء أوّل واجهة متاحة
يمكنك إنشاء الواجهة الأولى في مصفوفة معيّنة من الواجهات باستخدام التابع first. يُفيدك هذا إن سمح تطبيقك أو حزمتك بتخصيص الواجهات أو إعادة تعريفها (overwriting):
return view()->first(['custom.admin', 'admin'], $data);
يمكنك أيضا مناداة هذا التابع عبر الواجهة الساكنة View:
use Illuminate\Support\Facades\View;
return View::first(['custom.admin', 'admin'], $data);
تمرير البيانات للواجهات
كما رأيت في الأمثلة السابقة، يمكنك تمرير مصفوفة من البيانات للواجهات:
return view('greetings', ['name' => 'Victoria']);
عند تمرير المعلومات بهذه الطريقة ، يجب أن تكون البيانات مصفوفة من الأزواج مفتاح / قيمة. يمكنك الوصول لكل قيمة باستخدام مفتاحها المُوافق داخل واجهتك، مثل <?;php echo $key ?>
. كبديل لتمرير مصفوفة كاملة من البيانات إلى دالّة المُساعد view
، يمكنك استخدام التابع with
لإضافة أجزاء منفردة من البيانات للواجهة:
return view('greeting')->with('name', 'Victoria');
مشاركة البيانات مع جميع الواجهات
قد تحتاج من حين لآخر إلى مشاركة جزء من البيانات مع جميع الواجهات
التي يصيّرها تطبيقك. يمكنك استخدام التابع share من واجهة العرض الساكنة (view facade) للقيام بذلك. عادة، عليك وضع نداءات المشاركة داخل تابع مقدّم الخدمات boot. لك حريّة إضافتها إلى AppServiceProvider أو إنشاء مُقدّم خدمة منفصل لإيوائها:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider
{
/**
* تمهيد أي خدمة تطبيق
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
}
/**
* سجّل موفّر الخدمة
*
* @return void
*/
public function register()
{
//
}
}