میلاد هدایت پور
3 سال پیش توسط میلاد هدایت پور مطرح شد
8 پاسخ

اجرا نشدن ولیدیشن بقیه فیلد ها بعد از اولین ارور

سلام
من توی متد rules توی کاستوم ولیدشنی که نوشتم اینو ولیدشنارو دارم:

        return [
                    'field1' => ['required',new checkHasFilledForm()],
                    'field2' => 'required',
                    'field3' => 'required',
                    ....
]]

میخوام وقتی ولیدیشن فیلد1 fail شد دیگه بقیه فیلدا ولیدیت نشن! و برگرده صفحه قبل و ارور همون فیلد1 رو فقط نشون بده
چی باید بکنم؟؟؟
bail کار من رو راه نمیندازه چوت بقیه شرط های فیلد رو از کار میندازه
در صورتی که من میخام وقتی یک فیلد به ارور خورد دیگه بقیه فیلد ها هم ولیدیت نشن


ثبت پرسش جدید
علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش مطرح شد
1

حداقل من راهی براش نمی شناسم .
فکر کنم باید به صورت دستی پیاده سازی کنید .
اما بهتره بقیه دوستان هم نظر بدن ...


حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 3 سال پیش مطرح شد
0

سلام
شاید این راه عملی باشه که تنها یک rule کاستوم بسازید و همه attribute ها رو به اون پاس بدید و مکانیزمی که میخواهید پیاده کنید توی passes مطابق نیاز خودتون عملیاتی کنید مثلا با ایجاد flag در شروط بررسی یا استفاده ازbreak در switch بررسی رو متوقف کنید.


مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش مطرح شد
1

اگر از لاراول 8 استفاده میکنید برای این کار یه متد جدید معرفی شده

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
   // your validation rules
])->stopOnFirstFailure(true);

$validator->validate();

میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 3 سال پیش مطرح شد
1

@hekmati
نه چون شرطام زیاده فک نکنم زیاد جالب باشه این راه
ولی مرسی


میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 3 سال پیش مطرح شد
0

@mehranmarandi90
میشه بگید توی کاستوم ولیدیشن چجوری استفادش کنم توی کدی که بالا گذاشتم؟


مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش آپدیت شد
0
use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
    'field1' => ['required',new checkHasFilledForm()],
    'field2' => ['required'],
    'field3' => ['required'],
])->stopOnFirstFailure(true);

$validator->validate();

مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش مطرح شد
0

شک دارم دقیقا متوجه منظورتون از custom validation شده باشم، میخوایید همه این فیلد ها در یک rule داخل یک custom vlaidation rule بررسی بشن؟
چون تا جایی که تو ذهنمه custom validation باید boolean برگردونه، یعنی اون آرایه ای که تو return نوشید مقدار درست بازگشتی rule نمیتونه باشه


میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 3 سال پیش مطرح شد
0

@mehranmarandi90
نه من خودم کلاس ولیدیشن ساختم. این کلاس یک فانکسنه rules داره که یه ارایه شبیه ارایه ای که بالا گذاشتم رو برمیگردونه.
توی این فانکشن میخام همچین کاری کنم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام