Laravel fournit un moyen élégant de gérer les données de demande manquantes, c'est-à-dire missing()
et whenMissing()
. Ces méthodes simplifient le processus de gestion des champs optionnels et de définir des valeurs par défaut, ce qui rend votre code plus expressif et maintenable.
Regardons un exemple de système de mise à jour de configuration flexible:
// 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 = []; // 处理主题偏好设置 $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'), ]; }); // 处理通知设置 if ($request->missing('notifications')) { $updates['notifications'] = [ 'email' => true, 'push' => false, 'frequency' => 'daily', ]; } else { $updates['notifications'] = $request->input('notifications'); } $settings->update($updates); return response()->json([ 'message' => 'Settings updated successfully', 'settings' => $settings->fresh(), ]); } }
Exemple d'utilisation:
// 最小数据输入 { "notifications": { "email": true, "push": true } } // 响应 { "message": "Settings updated successfully", "settings": { "theme": { "mode": "system", "color": "blue" }, "notifications": { "email": true, "push": true, "frequency": "daily" } } } // 完整数据输入 { "theme": { "mode": "dark", "color": "purple" }, "notifications": { "email": false, "push": true, "frequency": "weekly" } }
missing()
et whenMissing()
fournissent un moyen concis de traiter les données de demande facultative tout en gardant le code lisible. Ils sont particulièrement utiles lors du traitement des formulaires ou des demandes d'API soumis à l'utilisateur et peuvent éviter efficacement les erreurs causées par les données manquantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!