درود وقت بخیر
دوستان من متوجه شدم که اگر از create
و $request->all()
استفاده کنم باید در مدل $fillable
استفاده کنم و لیست سفید فیلد ها رو معرفی کنم و تا اونجا که از یکی از رفرنس های خارجی دیدم ترجیحا میگفتن از fillable استفاده کنیم تا guarded .
2تا سوال داشتم :
1- من تعداد 25 تا فیلد دارم آیا که 5تاش لیست سیاه هست حالا منظقی هست از fillable استفاده کنم یا باید guardedاستفاده کنم ؟
2- برای یک فیلد مهمی مثل role کاربر , در مدل یوزر قطعا نباید fillable باشه و در دسترس کاربر نباشه درسته؟ خب در backend من چطوری باید خودم دسترسی به این فیلد داشته باشم ؟
ممنون میشم راهنمایی کنید بنده رو
با تشکر
عزیز گفتم شما طوری باید کد بنویسی که در این فیلد مقدار از طریق فرم مستقیم پر نشه. تو پنل ادمین اجازه اینکه کدوم کاربر چه نقشی رو باید داشته باشه بر عهده سوپر یوزر ادمین هست که اون میتونه این فیلدو از هر طریق مقدار دهی کنه. در قسمت کاربری سایت کاربری که اقدام به ایجاد کاربر میکنه در اونجا باید به این صورت مقدار کاربر عادی رو به فیلد بدی که تا کاربر هرگز نتونه موقع رجیستر مقدار این فیلدو برحست خواست خودش مقدار بده.
$user = new User();
$user->name = 'value';
$user->email = 'value';
$user->password = 'value';
$user->role = 'user';
$user->save();
من کاری به این ندارم که فیلدهای ایمیل و نام و پسورو رو چطور مقدار میدین و لی مقدار فیلد role رو حتما باید به صورت بالا مقدار بدین تا کاربر هیچ وقت نتونه مقدار دیگروی درش قرار بده.
شما در بک اند هم بهش دسترسی داری فرقش اینه که کاربر این فیلدو از طریق فرم نمیتونه مقدار دهی کنه. همین.
البته گفته باشم این قانون زیاد هم در لاراول کار نمیکنه و من تست کردم عملی نشده. اگر فیلدی رو در $fillable قرار ندی نمی تونی بهش به هر صورت مقدار بدی. شما تمام فیلدهاتو در $fillable قراربده فقط اون فیلدهای حساسو اجازه نده از طریق فرم مقدار دهی کنن و این فیلدو به صورت هارد کد مقدار بده که امکان این نباشه کاربر از طریق فرمی در سایت بهشون مقدار بده.
من تعداد ۲۵ تا فیلد دارم آیا که ۵تاش لیست سیاه هست
در این حالت guarded استفاده کنی و ۵ تا رو وارد کنی بهتره تا بخواهی ۲۰ تا رو به fillable ها اضافه کنی.
اگر فیلدی رو در $fillable قرار ندی نمی تونی بهش به هر صورت مقدار بدی
ممنون دوست من از پاسختون
دقیقا سوالم همینجاست مثلا یک فیلد مثل نقش کاربری رو که خب خیلی مهم هست رو در fillable اضافه نکنم که کاربر نتونه شیطنت کنه چطوری میتونم در بکند خودم بهش دسترسی داشته باشم ؟ من الان در بکند هم ایجاد کاربر دارم که از یک مدل یکسان داره استفاده مدل users حالا داخل fillable نمیزارم خودمم تو بکند دیتاارسال میکنم تو دیتابیس اضافه نمیشه تو fillable هم میزارم نگران بخش کاربری هستم
چطوری باید هندل کنم ممنون میشم راهنمایی کنید
با تشکر
عزیز گفتم شما طوری باید کد بنویسی که در این فیلد مقدار از طریق فرم مستقیم پر نشه. تو پنل ادمین اجازه اینکه کدوم کاربر چه نقشی رو باید داشته باشه بر عهده سوپر یوزر ادمین هست که اون میتونه این فیلدو از هر طریق مقدار دهی کنه. در قسمت کاربری سایت کاربری که اقدام به ایجاد کاربر میکنه در اونجا باید به این صورت مقدار کاربر عادی رو به فیلد بدی که تا کاربر هرگز نتونه موقع رجیستر مقدار این فیلدو برحست خواست خودش مقدار بده.
$user = new User();
$user->name = 'value';
$user->email = 'value';
$user->password = 'value';
$user->role = 'user';
$user->save();
من کاری به این ندارم که فیلدهای ایمیل و نام و پسورو رو چطور مقدار میدین و لی مقدار فیلد role رو حتما باید به صورت بالا مقدار بدین تا کاربر هیچ وقت نتونه مقدار دیگروی درش قرار بده.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟