راکت

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

8 پاسخ

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

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

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

ثبت پرسش جدید

پاسخ‌ها

8
علیرضا کفایتی
علیرضا کفایتی
@alirezakefayati

تخصص: برنامه نویس laravel, vue.js

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

حسن حکمتی
حسن حکمتی
@hekmati

تخصص: برنامه نویس وب و بلاکچین

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

شاید پاسخ شما همین‌جا باشد

مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

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

use Illuminate\Support\Facades\Validator;

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

$validator->validate();
میلاد هدایت پور
میلاد هدایت پور
@miladparsi1070

تخصص: در حال پیشرفت

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

میلاد هدایت پور
میلاد هدایت پور
@miladparsi1070

تخصص: در حال پیشرفت

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

مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

use Illuminate\Support\Facades\Validator;

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

$validator->validate();
مهران مرندی
مهران مرندی
@mehranmarandi

تخصص: برنامه نویس

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

میلاد هدایت پور
میلاد هدایت پور
@miladparsi1070

تخصص: در حال پیشرفت

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

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

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