السماح بالأرقام فقط داخل Route Parameter
كيف تمنع مطابقة ال Route إذا احتوى ال Parameter على حروف بدلا من الأرقام
إذا كان لديك Route يستقبل رقم منتج من الرابط يمكنك كتابته بهذا الشكل
Route::get('/products/{id}', function (string $id) {
return 'Product ID: ' . e($id);
});في هذا المثال يمكن كتابة /products/15 ويمكن أيضا كتابة /products/test لأننا لم نحدد شكل القيمة المسموح بها
والآن سنستخدم ال where Method لتحديد أن القيمة يجب أن تحتوي على أرقام فقط
->where('id', '[0-9]+')القيمة [0-9] تعني السماح بالأرقام من صفر إلى تسعة وعلامة + تعني وجود رقم واحد أو أكثر
وهنا ال Code كاملا
Route::get('/products/{id}', function (string $id) {
return 'Product ID: ' . e($id);
})->where('id', '[0-9]+');الآن الرابط /products/15 سيطابق ال Route بينما /products/test لن يطابقه وستظهر استجابة 404 إذا لم يوجد Route آخر يطابق الرابط
ملحوظة
هذا الشرط يفحص شكل الرقم فقط ولا يتأكد من وجود المنتج في قاعدة البيانات