[英]Laravel add user and role using zizaco confide and entrust
[英]Laravel 5.2 : How to get the role of current user when using `Zizaco/entrust`?
我使用的是Laravel 5.2和Zizaco/entrust
5.2,我的问题是:
如何在使用Zizaco/entrust
时获得当前用户的角色?
NameAndRole.php
namespace App\Services;
use App\User;
use App\Role;
use Zizaco\Entrust\EntrustRole;
use Illuminate\Support\Facades\Cache;
class NameAndRole
{
public $username;
public $role;
public function __construct() {
$user = \Auth::user();
$this->username = $user->name;
$this->role =$user->roles->first()->name;
}
}
楷模:
角色: https : //github.com/Zizaco/entrust#role
<?php namespace App;
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole
{
}
用户: https : //github.com/Zizaco/entrust#user
<?php
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Eloquent
{
use EntrustUserTrait; // add this trait to your user model
...
}
查看: sidebar.blade.php
@inject('details','App\Services\NameAndRole')
{{ $details->username }}
{{ $details->role }}
错误:
ErrorException in NameAndRole.php line 20:
Trying to get property of non-object (View: D:\wnmp\www\laravel-entrust\resources\views\employer\partials\sidebar.blade.php) (View: D:\wnmp\www\laravel-entrust\resources\views\employer\partials\sidebar.blade.php)
您可以像雄辩中的任何其他关系一样访问它。 因此,要访问用户的角色,您可以执行以下操作:
$user->roles
这会返回一个雄辩的集合,因为User
可以拥有多个Role
(即它不会只有一个),所以如果你只想要一个角色而你想要它的字符串值,你可以这样做:
$user->roles->first()->name // or display_name
我猜你可以使用toArray()
方法将它toArray()
转换为数组,如果你想使用数组:
$user->roles->toArray()
编辑
您可以在分配之前检查用户是否有角色:
$this->role = $user->roles ? $user->roles->first()->name : 'No role';
要获取角色id
字段:
$user->roles->first()->id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.