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

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

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


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

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


ثبت پرسش جدید
کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش مطرح شد
1

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

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

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


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

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


کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش مطرح شد
0

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


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

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


کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش آپدیت شد
0

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


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

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


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش مطرح شد
0

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

 @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 3 سال پیش مطرح شد
0

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


کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش آپدیت شد
0

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

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

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

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

اینو تست کردم


کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش مطرح شد
1

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

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

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


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

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