سلام
میخوام در متد boot در appServiceProvider یکسری اطلاعات را به تمام روتها پاس بدم ولی خطا میده
در صورتی که شرطهای داخل متد زیر را وقتی در یک کنترلر میزارم درسته
مشکل چیه ؟
متن خطا
Trying to get property 'userRole' of non-object
کد
public function boot()
{
Schema::defaultStringLength(191);
if (Auth::user()->userRole->role == 1) {
$user_role = 'دانش آموز';
}
if (Auth::user()->userRole->role == 2) {
$user_role = 'مدرس';
}
if (Auth::user()->userRole->role == 3) {
$user_role = 'اپراتور';
}
if (Auth::user()->userRole->role == 10) {
$user_role = 'ادمین کل';
}
View::share(compact('user_role'));
}
}
@yk5742g
سلام.
وقتی چنین اروری دریافت میکنید مشخصا این قسمت از کد شما Auth::user() اطلاعات و اون آبجکت مورد انتظار رو برنمیگردونه و با برگشت دادن Null به این ارور میخورید.
حالا دلیل اصلی اینکه دریافت نمیکنید چیه ؟
به همین دلیل عملا توی این مرحله که جزء مراحل اولیه راه اندازی لاراول هست احراز هویتی (Authentication) صورت نگرفته که بتونید با فساد Auth یا هر راه دیگه ای به کاربر احراز هویت شده دسترسی داشته باشید.
دقیق نمیدونم راه جایگزینی باشه یا نه این رو باید دوستان با تجربه تر بیان کنن اما شما با کدی که دارید همیشه بجای آبجکت کاربر ، مقدار Null دریافت خواهید کرد.
@yk5742g
سلام
شما در مدل یوزر ریلیشنی به نام userRole ایجاد کردی؟
این خطا میگه چنین ریلیشنی وجود نداره
@yk5742g
سلام.
وقتی چنین اروری دریافت میکنید مشخصا این قسمت از کد شما Auth::user() اطلاعات و اون آبجکت مورد انتظار رو برنمیگردونه و با برگشت دادن Null به این ارور میخورید.
حالا دلیل اصلی اینکه دریافت نمیکنید چیه ؟
به همین دلیل عملا توی این مرحله که جزء مراحل اولیه راه اندازی لاراول هست احراز هویتی (Authentication) صورت نگرفته که بتونید با فساد Auth یا هر راه دیگه ای به کاربر احراز هویت شده دسترسی داشته باشید.
دقیق نمیدونم راه جایگزینی باشه یا نه این رو باید دوستان با تجربه تر بیان کنن اما شما با کدی که دارید همیشه بجای آبجکت کاربر ، مقدار Null دریافت خواهید کرد.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟