في هذا الدرس 6تصفّح المواضيع
رغم أن المتحكمات يمكنها إرجاع نصوص أو مصفوفات مباشرة، فإن استخدام الدالة المساعدة response يمنحك تحكماً كاملاً في كود حالة HTTP ورؤوس الرسالة الصادرة. يمكنك تسلسل دالة header لإضافة رأس مفرد أو دالة withHeaders لإرفاق مصفوفة رؤوس دفعة واحدة.
- تخصيص كود الحالة (Status Code): مرر رقم الحالة القياسي مثل 201 للإنشاء الناجح كمعامل ثانٍ لدالة الاستجابة.
- إضافة رأس مفرد (->header): يضبط قيمة رأس محدد في الرسالة الصادرة نحو المتصفح.
- مصفوفة رؤوس متعددة (->withHeaders): يرفق عدة رؤوس استجابة دفعة واحدة بصيغة مصفوفة ترابطية منظمة.
<?php
Route::get('/health', function () {
return response('Service Operational', 200)
->withHeaders([
'Content-Type' => 'text/plain',
'X-Region' => 'me-central-1',
]);
});
للبينات المهيكلة وطلبات AJAX وواجهات البرمجة، تحول دالة response->json المصفوفات والكائنات إلى نص JSON قياسي وتضبط رأس Content-Type تلقائياً إلى application/json. كما تتيح لك تمرير كود الحالة المناسب مثل 201 عند الإنشاء أو 400 عند الخطأ.
- الترميز وضبط الرأس تلقائياً (response->json): تحول البيانات لصيغة JSON وتضبط رأس نوع المحتوى القياسي.
- تحديد كود الحالة (HTTP Status): يقبل المعامل الثاني أكواد النجاح أو الفشل مثل 201 أو 422.
- توحيد هيكل الردود (Structured Payload): تضمن استلام الواجهة الأمامية لكائنات JSON متسقة وسهلة القراءة.
<?php
Route::post('/api/coupons/check', function () {
return response()->json([
'valid' => true,
'discount_percent' => 20,
], 200);
});
بعد إتمام معالجة الطلب في تطبيقات الويب، غالباً ما يعيد المتحكم توجيه المتصفح إلى مسار مسمى عبر redirect->route أو الدالة المختصرة to_route. ولإعادة المستخدم مباشرة إلى الصفحة السابقة التي أتى منها، نستخدم الدالة المساعدة back.
- التحويل المختصر للمسار (to_route Helper): يوجه المتصفح لمسار مسمى مع تمرير معاملات الرابط في سطر واحد.
- العودة للصفحة السابقة (back Helper): يعيد الزائر للصفحة التي أرسل منها الطلب بالاعتماد على رأس المرجع.
- الروابط الخارجية (redirect->away): يستخدم عند الحاجة لتحويل المستخدم إلى موقع خارجي بأمان.
<?php
class CheckoutController extends Controller
{
public function complete()
{
return to_route('orders.show', ['id' => 1042]);
}
}
عند إرجاع ملفات للمستخدم، تضبط دالة response->download رأس الاستجابة لإجبار المتصفح على تنزيل الملف وحفظه باسم مخصص. وفي المقابل، تعرض دالة response->file الملفات مثل مستندات PDF أو الصور مباشرة داخل نافذة المتصفح دون تنزيل إجباري.
- التنزيل المباشر (response->download): يجبر المتصفح على حفظ الملف على جهاز المستخدم بالاسم المحدد.
- الحذف التلقائي بعد الإرسال (deleteFileAfterSend): يحذف الملفات المؤقتة من الخادم فور اكتمال تنزيلها.
- المعاينة داخل المتصفح (response->file): يعرض ملفات PDF والصور مباشرة داخل تبويب المتصفح.
<?php
public function downloadPdf()
{
$path = storage_path('app/invoices/inv-1042.pdf');
return response()->download($path, 'Invoice.pdf');
}
يضمن اختيار دالة الاستجابة الصحيحة إرسال أكواد حالة HTTP دقيقة وكوكيز مشفرة وتحويلات سليمة للمتصفح. استعن بالجدول المرجعي التالي لاختيار باني الاستجابة القياسي لكل حالة في متحكماتك.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| إرجاع بيانات JSON | ضبط الرؤوس يدوياً واستدعاء json_encode في كل دالة | استخدام باني الاستجابة القياسي response->json($data, 201) |
| إعادة توجيه المتصفح | كتابة رأس Location يدوياً مع المسار النصي وإيقاف التنفيذ | استخدام دوال التحويل الآمنة للمسارات المسماة to_route وback |
| ملفات الكوكيز | إرسال كوكيز نصية مكشوفة عبر setcookie يسهل تعديلها بالمتصفح | تشفير وتوقيع الكوكيز تلقائياً عبر Cookie::queue و->cookie |
| تنزيل الملفات | قراءة الملف يدوياً وكتابة رؤوس التنزيل المعقدة في كل مرة | البث الآمن والمباشر للملفات عبر دالة response->download |
<?php
use Illuminate\Support\Facades\Cookie;
Cookie::expire('legacy_cart_id');
return to_route('catalog.index');
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «استجابات HTTP وإعادة التوجيه والكوكيز في Laravel» مفاهيم بناء الاستجابات وتخصيص رؤوس HTTP، وإرجاع استجابات JSON المهيكلة، وتحويل الزائر للمسارات بدالة to_route وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إدارة الجلسات وبيانات الوميض المؤقتة في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 HTTP Responses استجابات HTTP
- إرجاع استجابات HTTP المخصصة وبيانات JSON ورؤوس الرسالة والكوكيز المشفرة والتحويلات المباشرة وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
- للمراجعة
- 02 Creating Responses and Custom Headers بناء الاستجابات وتخصيص رؤوس HTTP
- المفهوم الهندسي والتطبيق العملي المباشر لقسم بناء الاستجابات وتخصيص رؤوس HTTP في إطار العمل Laravel 12.
- للمراجعة
- 03 Returning Structured JSON Responses إرجاع استجابات JSON المهيكلة
- المفهوم الهندسي والتطبيق العملي المباشر لقسم إرجاع استجابات JSON المهيكلة في إطار العمل Laravel 12.
- للمراجعة
- 04 Redirecting to Named Routes Cleanly تحويل الزائر للمسارات بدالة to_route
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تحويل الزائر للمسارات بدالة to_route في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «بناء الاستجابات وتخصيص رؤوس HTTP» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «إرجاع استجابات JSON المهيكلة» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من بناء الاستجابات وتخصيص رؤوس HTTP في إطار العمل Laravel 12؟
يسهم بناء الاستجابات وتخصيص رؤوس HTTP في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «إرجاع استجابات JSON المهيكلة» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة تحويل الزائر للمسارات بدالة to_route بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تحويل الزائر للمسارات بدالة to_route.
لماذا يُعد تطبيق إرفاق الكوكيز المشفرة مع الاستجابة مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تحميل الملفات وعرضها في المتصفح في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع أنواع ودوال استجابات HTTP؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.