2017-05-08 6 views
1

Ich zizaco/entrust Paket in meinem Laravel Projekt neben Multi Auth Paketnamen Hesto/multi-AuthÜberprüfung auf Rollen und Berechtigungen in zizaco/entrust Laravel Paket

Unser Projekt auf Laravel 5.4 verwenden,

i unten Fehlermeldung erhalten, wenn i Rolle Benutzer aktuellen angemeldeten erhalten möchten und Berechtigungen mit dieser Methode: Entrust::hasRole('role-name'); OR Auth::user()->hasRole('role-name');

Aber ich Dose Zugriff des Benutzers Rolle mit dieser Methode zum Beispiel:

$user = User::find($userid); 
dd($user->hasRole('admin')); // Return true 

i folgte genau Anweisung Installation aber ich bekomme unter Fehlern:

`Non-static method Zizaco\Entrust\Entrust::hasRole() should not be called statically` 

Wie kann ich mein Problem zu lösen, Vielen Dank im Voraus

+0

Überprüfen Sie die Anweisung 'use'. Benutzt du die Klasse oder die Fassade? Sie möchten die Fassade nutzen. –

+0

Möglicherweise verwenden Sie die falsche Klasse. Haben Sie versucht, '\ Entrust :: hasRole();' zu verwenden. Noch nicht getestet, aber die Lösung ist, dass Sie EntrustFacade verwenden müssen, die hier erwähnt wird: https://github.com/Zizaco/entrust/blob/master/src/Entrust/EntrustFacade.php – PaladiN

+0

@PaladiN es ist Arbeit für mich, und Ich hatte ein anderes Problem darin, aktuelle angemeldete Benutzer in 'vendor/zizaco/trust/src/Entrust/Entrust.php' in' user() 'Methode zu bekommen. weil ich mit 'Hesto/MultiAuth' konnte die vorherige Rückkehr den aktuellen Benutzer nicht wiederherstellen, Dann für die Behebung des Problems, änderte ich return' $ this-> app-> auth-> user(); 'zurück zu' Auth :: guard ('user') -> user(); 'aber ich denke, es gibt immer noch ein Problem mit Entrust Fecade –

Antwort

2

In dieser Fehlermeldung haben Sie eine Antwort auf Ihr Problem:

Nicht statische Methode Zizaco \ Entrust \ Entrust :: hasRole() sollte nicht statisch

Sie diese Methode namens hasRole() statisch aufgerufen werden, aber diese Methode ist nicht statisch. Das bedeutet, dass Sie ein Objekt dieser Klasse erstellen müssen, aber stattdessen eine Klasse.

In dem Beispiel, das Sie haben:

$user = User::find($userid); 
dd($user->hasRole('admin')); // Return true 

Sie ein Objekt der Klasse User (glaube ich) implementiert Klasse EntrustUser und Klasse erstellen:

$user = User::find($userid); 

$user ist ein Objekt, und es `s nicht statisch, können Sie hasRole() verwenden.

Mit anderen Worten, Methode hasRole() zu verwenden (wörtlich - ist jemand eine Rolle?) Sie diese someone brauchen:

$user->hasRole('admin') // Is this user has role `admin`? 

Hope, ich es erklärt. Sorry über mein Englisch (ich studiere gerade).

Verwandte Themen