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

چه زمانی باید از fillable در لاراول استفاده کنیم

درود وقت بخیر
دوستان من متوجه شدم که اگر از create و $request->all() استفاده کنم باید در مدل $fillable استفاده کنم و لیست سفید فیلد ها رو معرفی کنم و تا اونجا که از یکی از رفرنس های خارجی دیدم ترجیحا میگفتن از fillable استفاده کنیم تا guarded .
2تا سوال داشتم :
1- من تعداد 25 تا فیلد دارم آیا که 5تاش لیست سیاه هست حالا منظقی هست از fillable استفاده کنم یا باید guardedاستفاده کنم ؟

2- برای یک فیلد مهمی مثل role کاربر , در مدل یوزر قطعا نباید fillable باشه و در دسترس کاربر نباشه درسته؟ خب در backend من چطوری باید خودم دسترسی به این فیلد داشته باشم ؟

ممنون میشم راهنمایی کنید بنده رو
با تشکر


ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
1

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

$user = new User();

$user->name = 'value';
$user->email = 'value';
$user->password = 'value';
$user->role = 'user';
$user->save();

من کاری به این ندارم که فیلدهای ایمیل و نام و پسورو رو چطور مقدار میدین و لی مقدار فیلد role رو حتما باید به صورت بالا مقدار بدین تا کاربر هیچ وقت نتونه مقدار دیگروی درش قرار بده.


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش آپدیت شد
1

شما در بک اند هم بهش دسترسی داری فرقش اینه که کاربر این فیلدو از طریق فرم نمیتونه مقدار دهی کنه. همین.
البته گفته باشم این قانون زیاد هم در لاراول کار نمیکنه و من تست کردم عملی نشده. اگر فیلدی رو در $fillable قرار ندی نمی تونی بهش به هر صورت مقدار بدی. شما تمام فیلدهاتو در $fillable قراربده فقط اون فیلدهای حساسو اجازه نده از طریق فرم مقدار دهی کنن و این فیلدو به صورت هارد کد مقدار بده که امکان این نباشه کاربر از طریق فرمی در سایت بهشون مقدار بده.


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

من تعداد ۲۵ تا فیلد دارم آیا که ۵تاش لیست سیاه هست

در این حالت guarded استفاده کنی و ۵ تا رو وارد کنی بهتره تا بخواهی ۲۰ تا رو به fillable ها اضافه کنی.


نیما
@shadecute3 4 سال پیش آپدیت شد
0

اگر فیلدی رو در $fillable قرار ندی نمی تونی بهش به هر صورت مقدار بدی

ممنون دوست من از پاسختون
دقیقا سوالم همینجاست مثلا یک فیلد مثل نقش کاربری رو که خب خیلی مهم هست رو در fillable اضافه نکنم که کاربر نتونه شیطنت کنه چطوری میتونم در بکند خودم بهش دسترسی داشته باشم ؟ من الان در بکند هم ایجاد کاربر دارم که از یک مدل یکسان داره استفاده مدل users حالا داخل fillable نمیزارم خودمم تو بکند دیتاارسال میکنم تو دیتابیس اضافه نمیشه تو fillable هم میزارم نگران بخش کاربری هستم

چطوری باید هندل کنم ممنون میشم راهنمایی کنید
با تشکر

@ali.bayat
@hosseinshirinegad98


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

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

$user = new User();

$user->name = 'value';
$user->email = 'value';
$user->password = 'value';
$user->role = 'user';
$user->save();

من کاری به این ندارم که فیلدهای ایمیل و نام و پسورو رو چطور مقدار میدین و لی مقدار فیلد role رو حتما باید به صورت بالا مقدار بدین تا کاربر هیچ وقت نتونه مقدار دیگروی درش قرار بده.


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

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