Ich benutze Laravel 5.2 und Zizaco/entrust
5.2, meine Frage ist:
Wie bekomme ich die Rolle des aktuellen Benutzers bei der Verwendung Zizaco/entrust
?Laravel 5.2: Wie bekomme ich die Rolle des aktuellen Benutzers, wenn ich 'Zizaco/trust' benutze?
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;
}
}
Modelle:
Rolle: https://github.com/Zizaco/entrust#role
<?php namespace App;
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole
{
}
Benutzer: 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
...
}
Ansicht: sidebar.blade.php
@inject('details','App\Services\NameAndRole')
{{ $details->username }}
{{ $details->role }}
Fehler:
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)
Es ist ein Fehler, ich einige Codes hinzugefügt über. – zwl1619
Der Benutzer hat eine Rolle, oder? Wenn Sie diese Art von Fehler erhalten, wird Ihnen mitgeteilt, dass Sie versuchen, auf Eigenschaften auf etwas zuzugreifen, das nicht existiert. Ich nehme an, hier Rolle oder Benutzer existiert nicht. Sie können also 'dd ($ user-> roles)' oder 'dd ($ user-> roles-> first() -> name;)' vor dem Übergeben an Ihre Ansicht versuchen. Siehe meine Antwort auch bearbeiten. – haakym
Das Ergebnis von 'dd ($ user-> roles-> first() -> name);' ist: 'Versuche, die Eigenschaft von Nicht-Objekten zu erhalten. Muss ich auch die Beziehung zwischen Benutzer und Rollen in Benutzer definieren .php, wenn ich 'Zizaco/trust' benutzt habe? – zwl1619