راکت
حل شده

اعتبار سنجی آرایه ی تو در تو در لاراول

9 پاسخ

با سلام و خسته نباشید
من یه آرایه ی تو در تو دارم و اونو فرستادم برا ولیدیشن ولی اعتبار سنجی روشون صورت نمیگیره و ریدایرکت بک میشه و پیام خالی بودن فیلد رو نمایش میده
 تصویر
و ولیدیشن من :


$validated = $request->validate([
            'jobs.*.title' => 'required|min:3|max:250',
            'jobs.*.income'  => 'required|min:3',
            'jobs.*.hoursWork'  => 'required'
        ]);```

توجه داشته باشید این رکورها فقط شامل title نمیشن ما key ها دیگه ای هم داریم پس نمیشه گفت jobs..

کیهان
کیهان
@keyhan
ثبت پرسش جدید

پاسخ‌ها

9
کیهان
کیهان
@keyhan

تخصص: PHP programmer

بهترین پاسخ

خب مشکل حل شد
خیلی آسون فقط کافی بود مقادیر متغیر رو به آخر name اضافه کنم

name="jobs['title'][<id>]"
// و توی ولیدیشن
'jobs.title.*'

مشکل من اینطوری حل شد
ممنونم بابت پاسخ هاتون 🙏
@mehdi0121 @hosseinshirinegad98

مهدی اردشیر
مهدی اردشیر
@mehdi0121

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

سلام
خالی بودن چه فیلدی رو ؟
شما اینجا
income,hoursWork
را required کردی ولی اونجا فقط title رو فرستادی

کیهان
کیهان
@keyhan

تخصص: PHP programmer

@mehdi0121
در واقع به این شکله:
 تصویر

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

مهدی اردشیر
مهدی اردشیر
@mehdi0121

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

اینجوری فکر نکنم بشه
ولی میتونی بجای required از nullableاستفاده کنی

کیهان
کیهان
@keyhan

تخصص: PHP programmer

@mehdi0121
میشه بفرمایید چرا نمیشه ؟!

مهدی اردشیر
مهدی اردشیر
@mehdi0121

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

سلام خوب امکانش نیست( البته به نظر من اگه بیشتر بگری شاید بشه )
هر بار توی یک ارایه رو چک میکنه و این قوانینی که نوشتی باید توش رعایت بشه

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

سلام با این فرمی که درس کردم داره درست کار میکنه
شاید آرایه فرمو درست ایجاد نکرده بودی. تست کن شاید به کارت اومد

 @if ($errors->count())
                    @foreach($errors->all() as $e)
                        <p>{{$e}}</p>
                    @endforeach
                @endif
                <form method="post" id="form" action="{{url('validate')}}">
                    @csrf
                    jobs-0-title:
                    <input type="text" name="jobs[0][title]" value="">
                    <br>
                    jobs-0-income:
                    <input type="text" name="jobs[0][income]" value="">
                    <br>
                    jobs-0-hoursWork:
                    <input type="text" name="jobs[0][hoursWork]" value=""><br>
                    <hr>
                    jobs-1-title:
                    <input type="text" name="jobs[1][title]" value=""><br>
                    jobs-1-income:
                    <input type="text" name="jobs[1][income]" value=""><br>
                    jobs-1-hoursWork:
                    <input type="text" name="jobs[1][hoursWork]" value=""><br>
                    <button type="submit">Submit</button>
                </form>

نمایش فرم و ارورها

مهدی اردشیر
مهدی اردشیر
@mehdi0121

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

سلام
@hosseinshirinegad98
ایشون منظورشون اینه که توی یک ارایه title دارند و توی یه ارایه دیگه hoursWork و میخان ولیدت کنن اینارو با هم

کیهان
کیهان
@keyhan

تخصص: PHP programmer

@hosseinshirinegad98
سلام
میشه بفرمایید چطور validation رو انجام دادید؟
ببینید یه قسمت از name من کاملا متغیره یعنی من id رو باهاش میفرستم تا بتونم اونو آپدیت کنیم

                    <input type="text" name="jobs[<id>][title]" value=">

پس اصلا من نمیتونم اینو بصورت دستی تو ولیدیشن مشخص کنم پس از * جای اون استفاده میکنم
دوستمون گفتن فیلد رو nullable کنید اینکارو انجام دادم وجواب داد پس کلید ها درست تعریف شدن ولی وقتی required میکنم بخاطر اینکه هر کلید شامل دو درخواست متفاوت میشه ارور دریافت میکنم مثلا:

jobs[70]['title']
jobs[74]['title']

اینو تست کردم

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

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