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

Validationدر لاراول

سلام دوستان خسته نباشید
من ی فرم دارم واسه ثبت کاربر میخام همون جا که کاربرا ثبت کردم نقش هم بهش بدم..بین جدول نقشها و کاربرها رابطه چند به چند برقراره.مشکلم توی اعتبار سنجیه ببینید من فیلد نقشها را required تعریف کردم اما حتی اگه نقش هم واسه کاربر وارد کنم بازم خطای اعتبار سنجی میده چون اول کاربرsave میشه و دنباله نقشها میگرده و خطا رخ میده و بعد از save شدن کاربر نقشها attache میشن
این کدم

public function store(Request $request)
 {
   $user=new User;
   $user->name=$request->name;
   $user->email=$request->email;
   $user->password=bcrypt($request->password);
   $user->status=$request->status;
   $user->save();
   $user->roles()->attach($request->role);
 }

راه حلش چیه؟


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

فیلد نقشها را nullable تعریف کن..
و پس از ساخت یوزر چک کن، اگر نقشی انتخاب شده بود .. attach اش کن
چون در برخی موارد ما اصلا نمیخواهیم نقشی به کاربر بدیم

$user->save();
if ($request->has('role'))
{
    $user->roles()->attach($request->role);
}

محمد میرزاخانی
@mirzamohammad.com 3 سال پیش مطرح شد
0

@ali.bayat
ممنون.حالا اگه خواستم حتما نقش بدم چی؟راهی نداره به validation فهموند اول attache کن بعد اعتبار سنجی کن؟


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

معمولا اولین مرحله ای که داخل متدها store و update اتفاق میفته، اعتبارسنجی هست
چرا میتونی توی هر مرحله که دوست داری اعتبار سنجی کنی ولی ممکنه یکپارچگی داده ها رو از دست بدی

این یه نکته و نکته دیگه اینکه بالاخره باید یوزری وجود داشته باشه که شما بهش نقش رو بدی


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

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