2017-09-29 1 views
1

J'ai installé l'administrateur VOYAGER avec succès de hereappel à une fonction de membre relationLoaded() sur la chaîne de voyage admin

Sur ma page client, j'ai créé un enregistrement personnalisé qui est dérivé de auth. Je peux enregistrer l'utilisateur avec succès. Après avoir installé l'administrateur de voyage, j'ai ajouté un nouvel utilisateur sur le formulaire d'inscription du client. Puis, quand j'ai essayé d'accéder à la http://localhost:8000/admin et qu'une erreur s'est produite comme vu sur l'image.

enter image description here

est l'image ci-dessous de la ligne 53:

enter image description here

Et ci-dessous est le code complet de VoyagerUse.php

<?php 

namespace TCG\Voyager\Traits; 

use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; 
use TCG\Voyager\Facades\Voyager; 
use TCG\Voyager\Models\Role; 

/** 
* @property \Illuminate\Database\Eloquent\Collection roles 
*/ 
trait VoyagerUser 
{ 
public function role() 
{ 
    return $this->belongsTo(Voyager::modelClass('Role')); 
} 

/** 
* Check if User has a Role(s) associated. 
* 
* @param string|array $name The role to check. 
* 
* @return bool 
*/ 
public function hasRole($name) 
{ 
    if (!$this->relationLoaded('role')) { 
     $this->load('role'); 
    } 

    return in_array($this->role->name, (is_array($name) ? $name : [$name])); 
} 

public function setRole($name) 
{ 
    $role = Voyager::model('Role')->where('name', '=', $name)->first(); 

    if ($role) { 
     $this->role()->associate($role); 
     $this->save(); 
    } 

    return $this; 
} 

public function hasPermission($name) 
{ 
    if (!$this->relationLoaded('role')) { 
     $this->load('role'); 
    } 

    if (!$this->role->relationLoaded('permissions')) { 
     $this->role->load('permissions'); 
    } 

    return in_array($name, $this->role->permissions->pluck('key')->toArray()); 
} 

public function hasPermissionOrFail($name) 
{ 
    if (!$this->hasPermission($name)) { 
     throw new UnauthorizedHttpException(null); 
    } 

    return true; 
} 

public function hasPermissionOrAbort($name, $statusCode = 403) 
{ 
    if (!$this->hasPermission($name)) { 
     return abort($statusCode); 
    } 

    return true; 
} 
} 
+0

Qu'existe-t-il dans la ligne 53 de VoyagerUser.php? – Maraboc

+0

bonjour. juste édité ma question – smzapp

+0

Je pense que vous avez un attribut de rôle dans la table d'utilisateur n'êtes-vous pas? – Maraboc

Répondre

1

Comme mentionné dans le VoyagerUser en ligne 53:

if(!$this->role->relationLoaded('permissions')){ ... 

Le rôle ici est considéré comme une relation pas un champ :)

et l'erreur

appel à une fonction de membre relationLoaded() sur la chaîne

signifie que vous avez le rôle en tant qu'attribut dans le modèle utilisateur

Il ne vous reste plus qu'à renommer l'attribut de rôle en quelque chose d'autre et tout fonctionnera parfaitement;)

+0

mis en ligne et accepté. : D – smzapp

+0

ouais bien sûr l'homme – smzapp

+0

Votre accueil merci aussi;) – Maraboc