معالجة بيانات الطلبات المفقودة في لارافيل

يوفر Laravel طرقًا أنيقة لإدارة بيانات الطلبات الغائبة من خلال `missing()` و `whenMissing()`. تبسط هذه الطرق عملية التعامل مع الحقول الاختيارية وتعيين القيم الافتراضية، مما يجعل كودك أكثر تعبيرًا وقابلية للصيانة.
// Check for missing input
if ($request->missing('name')) {
$name = 'Guest User';
}
 
// Handle missing data with callbacks
$request->whenMissing('email', function () {
// Handle missing email
});
دعنا نستكشف مثالًا لنظام تحديث إعدادات مرن:
// app/Controllers/SettingsController.php
<?php
 
namespace App\Http\Controllers;
 
use App\Models\Settings;
use Illuminate\Http\Request;
 
class SettingsController extends Controller
{
public function update(Request $request, Settings $settings)
{
$updates = [];
// Handle theme preferences
$request->whenMissing('theme',
function() use (&$updates) {
$updates['theme'] = [
'mode' => 'system',
'color' => 'blue'
];
},
function() use (&$updates, $request) {
$updates['theme'] = [
'mode' => $request->input('theme.mode', 'light'),
'color' => $request->input('theme.color', 'blue')
];
}
);
// Handle notification settings
if ($request->missing('notifications')) {
$updates['notifications'] = [
'email' => true,
'push' => false,
'frequency' => 'daily'
];
} else {
$updates['notifications'] = $request->notifications;
}
$settings->update($updates);
return response()->json([
'message' => 'Settings updated successfully',
'settings' => $settings->fresh()
]);
}
}
مثال على الاستخدام:
// Input with minimal data
{
"notifications": {
"email": true,
"push": true
}
}
// Response
{
"message": "Settings updated successfully",
"settings": {
"theme": {
"mode": "system",
"color": "blue"
},
"notifications": {
"email": true,
"push": true,
"frequency": "daily"
}
}
}
// Input with complete data
{
"theme": {
"mode": "dark",
"color": "purple"
},
"notifications": {
"email": false,
"push": true,
"frequency": "weekly"
}
}
توفر طريقتا `missing()` و `whenMissing()` طريقة نظيفة للتعامل مع بيانات الطلبات الاختيارية مع الحفاظ على سهولة قراءة الكود.
جميع الحقوق محفوظة © 2025 Laravel | عربي