سلام
من یک جدول ساده teachers دارم. می خوام اطلاعات معلم موجود در این جدول رو ویرایش کنم. هر معلم یک "کد ملی" منحصر بفرد داره. زمان آپدیت خطا می گیره که این کد ملی قبلا ثبت شده.
من به سایت لاراول به آدرس https://laravel.com/docs/9.x/validation#rule-unique مراجعه کردم. طبق توضیحات اونجا قوانین زیر رو نوشتم. اما باز هم خطا می ده و اجازه به روزرسانی رو نمی ده.
ممنون می شم راهنماییم کنید.
کدی که در اعتبارسنجی نوشتم:
public function rules()
{
return [
'name'=>'required|max:255',
'lastName' => 'required|max:255',
'melliCode'=>['required','digits:10',Rule::unique('teachers','melliCode')->ignore($this->melliCode)],
'tell'=>'digits:10',
'percentage'=>'digits_between:0,100|required',
];
}
ضمنا Rule رو هم use کردم.
سلام
'melliCode'=>['required','digits:10',Rule::unique('teachers','melliCode')->ignore($this->teacher)],
شما در متد ignore باید اسم پارامتری که در روت استفاده کردید رو نام ببرید
ببینید
Route::patch('teachers/{teacher}', [TeachersController::class, 'update']);
و شکل متدش
public function update(Request $request, Teacher $teacher)
{
}
ممنون
با تغییر دادن همون یک عبارت از mellicode به teacher مشکل حل شد.
البته من روت رو با resource نوشتم و خودم نفهمیدم عبارت teacher از کجا اومد. با اینکه مشکلم حل شده اما اگر بیشتر راهنمایی کنید ممنون می شم.
روت من:
Route::resource('/dashboard/teachers',TeacherController::class)->middleware(['auth']);
و ولیدیشن رو هم با یک ریکوئست اختصاصی نوشتم که کد تغییر یافته اش که کار می کنه اینجا هست:
public function rules()
{
return [
'name'=>'required|max:255',
'lastName' => 'required|max:255',
'melliCode'=>['required','digits:10',Rule::unique('teachers','melliCode')->ignore($this->teacher)],
'tell'=>'digits:10',
'percentage'=>'digits_between:0,100|required',
];
}
که به خاطر ریکوئست جدید کنترلرم هم به این شکل هست:
public function update(teacherRequest $request, Teacher $teacher)
{
}
بله درسته در روتهای resource اسم پارامترو لاراول اتومات تولید میکنه برای روتی که شما تعریف کردید اسم پارامترش میشهteacher یعنیsآخری حذف میشه به صورت مفرد میاد
اگر هم اسم پارامتر تو روتی رو نمیدونید دستور ارتیزان route:list رو بزنید و دنبال روتتون بگردید تا بهتون نشون بده که اسم پارامتر روتهای resource چی نامگذاری شده
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟