我使用laravel 5.4,我想将这三种不同类型的用户重定向到不同的页面
Types
+-------+-------------+
| id | name |
+-------+-------------+
| 1 | Super Admin |
| 2 | Admin |
| 3 | Cashier |
+-------+-------------+
Users
+-------+---------+-------------+
| id | type_id | name |
+-------+---------+-------------+
| 1 | 1 | Super Admin |
| 2 | 2 | Admin |
| 3 | 3 | Cashier |
+-------+---------+-------------+
我写这样的代码
use Auth;
public function redirectTo()
{
$superAdmin = Auth::user()->type_id = 1;
$admin = Auth::user()->type_id = 2;
$cashier = Auth::user()->type_id = 3;
if ($superAdmin) {
return '/superAdmin/home';
}
elseif ($admin) {
return '/admin/home';
}
elseif ($cashier) {
return '/cashier/home';
}
}
但它总是会重定向到' / superAdmin / home',有人可以告诉我的错吗?
答案 0 :(得分:0)
use Auth;
public function redirectTo()
{
$superAdmin = 1;
$admin = 2;
$cashier = 3;
if ($superAdmin == Auth::user()->type_id) {
return '/superAdmin/home';
}
elseif ($admin == Auth::user()->type_id) {
return '/admin/home';
}
elseif ($cashier == Auth::user()->type_id) {
return '/cashier/home';
}
}
试试这个
答案 1 :(得分:0)
您需要将type_id
与某些值进行比较,例如:
public function redirectTo()
{
if (auth()->user()->type_id === 1) {
return '/superAdmin/home';
} elseif (auth()->user()->type_id === 2) {
return '/admin/home';
} elseif (auth()->user()->type_id === 3) {
return '/cashier/home';
}
}
此外,use constants instead of integers喜欢1,2和3也是一个好主意。
答案 2 :(得分:0)
你需要能够有一个完整的回复,因为用户tupe_id
为空,以防万一作为后退。
use Auth;
public function redirectTo()
{
if(Auth::user()->type_id === null){
return '/404'; // IF you dont have a type id
} esleif(Auth::user()->type_id === 1){
return '/superAdmin/home';
} esleif(Auth::user()->type_id === 2){
return '/admin/home';
} esleif(Auth::user()->type_id === 3){
return '/cashier/home';
}
}
答案 3 :(得分:0)
尝试了解您在代码中编写的内容 您将1分配给$ supseadmin以及 AUTH ::用户() - > TYPE_ID
然后在你检查的if条件下 如果($超级管理员){}
表示如果(1){} 然后这种类型的if条件只检查数据是否存在,然后它进入你要返回的if语句体 超级管理员