در نوشته های پیشین در مورد نوشتن Route ها با پارامترهای اختیاری در لاراول صحبت کردیم. زمانی که در مسیر پارامتر یا پارامترهایی را تعیین می کنید در واقع کاربر می تواند هر نوعی از اعداد و رشته ها را وارد کند ولی ممکن است شما بخواهید کاربر را برای یک پارامتر خاص، محدود به یک نوع خاص کنید. به طور مثال اگر مسیر باید عددی را به عنوان شناسه کاربری دریافت کند، پس شما باید مسیر را به گونه ای بنویسد که برای این پارامتر صرفا تنها عدد وارد شود زیرا در جدول ستون شناسه کاربری از نوع عدد صحیح است.

توجه کنید که هدف از مسیرها (Route ها) در برنامه های تحت وب، دریافت کردن یک درخواست (Request) از کاربر و سپس پردازش آن توسط یک کنترل گر (Controller) و احتمالا دریافت داده ها از مدل (Model) و در نهایت نمایش داده ها به کاربر بر روی یک فایل نما (View) است.

پارامترها در این میان داده ای را مشخص می کنند که احتمالا باید درون یک کوئری (Query) استفاده شده تا این کوئری بر روی یک جدول پایگاه داده اجرا شود. بنابراین باید در چنین مواردی نوع پارامتر ورودی باید با نوع ستون جدول یکسان باشد. در لاراول امکان استفاده از عبارت های باقاعده در زمان تعریف مسیرها وجود دارد.

تعریف عبارت با قاعده توسط متد ()where

برای تعریف یک عبارت باقاعده در زمان تعریف یک Route باید از متد ()where استفاده کنیم. کدهای زیر تعدادی از نمونه کاربردهای متد ()where را نشان می دهد. متد ()where به عنوان آرگومان اول نام یک پارامتر و به عنوان آرگومان دوم یک عبارت با قاعده را دریافت می کند.

در مسیر اول پارامتری به نام name را می خواهیم دریافت کنیم و چون نوع این پارامتر باید با یک کاراکتر حرفی شروع شود، پس از عبارت با قاعده +[A-Za-z] استفاده شده است و به این معنی است که مقدار پارامتر می تواند شامل یک کاراکتر حرفی یا رشته ای از چندین کاراکتر حرفی باشد.

در مسیر دوم پارامتری به نام id تعریف کرده ایم که تنها شامل اعداد صحیح است، پس از عبارات با قاعده +[0-9] استفاده کرده ایم. تفسیر این عبارت با قاعده شبیه به قبلی است با این تفاوت که می تواند شامل مقادیری تنها اعداد باشند. در مسیر سوم یک آرایه انجمنی را به متد ()where ارسال کرده ایم که کلید های هر عنصر نام یک پارامتر و مقدار هر کلید یک عبارت با قاعده است.

دانلود کد Laravel Regex in Route