فریم ورک لاراول قواعد متنوعی برای اعتبارسنجی درخواستها ارائه کرده است. اما ممکن است مثالهای ارائه شده در مستندات این فریمورک محبوب در برخی مواقع مشکل گشا نباشند.مثلا ممکن است نیاز داشته باشیم تا اعتبارسنجی درخواست شامل آرایه در لاراول را انجام دهیم. به طور مثال اگر بخواهید درخواستی برای ثبت یک شرکت داشته باشید که نیاز به تعیین آدرس/آدرسها نیز باشد، امکان دارد در هنگام ثبت، لیستی از آدرسها نیز همراه با اطلاعات شرکت جهت ذخیره در دیتابیس دریافت کنید. در چنین مواقعی، برای اعتبارسنجی درخواست، باید امکانی فراهم شود تا بتوانیم این آرایه را اعتبارسنجی کنیم. به نمونه درخواست زیر دقت کنید:
"name":"شرکت حمل و نقل تست", "addresses": [ { "تهران- خیابان تست- کوچه تستی- پلاک ۱" }, { "تهران- خیابان تست- کوچه تستی- پلاک ۲" } ] }
همانطور که در مثال فوق مشخص است، درخواست ثبت سازمان شامل نام سازمان(name) و آرایهای از آدرسهای شرکت است که شامل ۲ آدرس است. برای اعتبار سنجی چنین درخواستی میتوان از قواعد زیر کمک گرفت.
public function rules() { return [ 'name' => 'required|min:3|max:255', 'addresses' => 'required|min:1|array', 'addresses.*' => 'required|min:3', ]; }
اعتبارسنجی درخواست شامل آرایه در لاراول
ممکن است درخواست پیچیده تر باشد. مثلا همراه اطلاعات نیاز باشد تا لیستی از کارکنان شرکت را نیز دریافت کنیم. به نمونه درخواست زیر توجه کنید.
{ "name":"شرکت حمل و نقل تست", "addresses": [ { "تهران- خیابان تست- کوچه تستی- پلاک ۱" }, { "تهران- خیابان تست- کوچه تستی- پلاک ۲" } ], "persons":[ { "name":"محمد", "family":"محمدی", "age":29, }, { "name":"مصطفی", "family":"داوودی", "age":23, }, { "name":"احمد", "family":"رضایی", "age":35, } ] }
تفاوت درخواست اینبار در این است که هر عضو از آرایهی افراد(persons) دارای اطلاعاتی مانند نام(name)، نام خانوادگی(family) و سن(age) است. در چنین شرایطی باید بتوانیم برای هر کدام از این اطلاعات، قواعد اعتبارسنجی تعریف کنیم.
public function rules() { return [ 'name' => 'required|min:3|max:255', 'addresses' => 'required|min:1|array', 'addresses.*' => 'required|min:3', 'persons.*.name' => 'required|min:3', 'persons.*.family' => 'nullable|min:3', 'persons.*.age' => 'required|digits_between:18,60', ]; }
اعتبارسنجی درخواستهای تو در تو در لاراول
اگر درخواست از این هم پیچیدهتر باشد و هر شخص لیستی از شماره تماسهای خود را نیز ارائه کند و بخواهیم برای این شماره موبایلها نیز اعتبارسنجی انجام دهیم. به نمونه درخواست زیر دقت کنید.
{ "name":"شرکت حمل و نقل تست", "addresses": [ { "تهران- خیابان تست- کوچه تستی- پلاک ۱" }, { "تهران- خیابان تست- کوچه تستی- پلاک ۲" } ], "persons":[ { "name":"محمد", "family":"محمدی", "age":29, "mobiles":[ ۹۱۲۱۱۱۲۲۳۳, ۹۱۲۳۳۳۲۲۱۱, ۹۱۲۲۲۲۱۱۳۳, ] }, { "name":"مصطفی", "family":"داوودی", "age":23, }, { "name":"احمد", "family":"رضایی", "age":35, "mobiles:[ ۹۱۲۱۲۳۱۲۳۱, ] } ] }
برای اعتبارسنجی چنین درخواستی میتوانیم از قواعد زیر کمک بگیریم.
public function rules() { return [ 'name' => 'required|min:3|max:255', 'addresses' => 'required|min:1|array', 'addresses.*' => 'required|min:3', 'persons.*.name' => 'required|min:3', 'persons.*.family' => 'nullable|min:3', 'persons.*.age' => 'required|digits_between:18,60', 'persons.*.mobiles' => 'nullable|array', 'persons.*.mobiles.*' => 'required|digits:10' ]; }
همچنین میتوانید از دیگر آموزشهای مرتبط با فریمورک لاراول دیدن نمایید.
موفق و پیروز باشید.