2017-01-24 10 views
1

Я последовал за учебником о том, как использовать роли, разрешения ... с приложением laravel. Я использую Доверьте пакет этот интерфейс:Как исправить возникшие ошибки после использования пакета доверенности с laravel

Interface

Но я столкнулся 2 ошибки, (я буду говорить о них обоих в одной и той же теме, потому что я думал, что, возможно, они вызваны одно и то же) :

1) ErrorException в Gate.php строке 317: Незаконный тип смещения в Исеть или пустой

-> это происходит, когда я нажимаю на "пункты" или "роли"

2) FatalErrorException в UserController.php линии 88: вызов функции члена срывать() на нуль

-> Это происходит, когда я пытаюсь редактировать пользователю

этого UserController:

//.... 
public function edit($id) 
{ 
    $user = User::find($id); 
    $roles = Role::pluck('display_name','id'); 
    $userRole = $user->roles->pluck('id','id')->toArray(); 
    return view('users.edit',compact('user','roles','userRole')); 
} 

public function update(Request $request, $id) 
{ 
    $this->validate($request, [ 
     'name' => 'required', 
     'email' => 'required|email|unique:users,email,'.$id, 
     'password' => 'same:confirm-password', 
     'roles' => 'required' 
    ]); 

    $input = $request->all(); 
    if(!empty($input['password'])){ 
     $input['password'] = Hash::make($input['password']); 
    }else{ 
     $input = array_except($input,array('password'));  
    } 

    $user = User::find($id); 
    $user->update($input); 
    DB::table('role_user')->where('user_id',$id)->delete(); 


    foreach ($request->input('roles') as $key => $value) { 
     $user->attachRole($value); 
    } 

    return redirect()->route('users.index') 
        ->with('success','User updated successfully'); 
} 

и это ItemController:

public function store(Request $request) 
{ 
    $this->validate($request, [ 
     'title' => 'required', 
     'description' => 'required', 
    ]); 

    Item::create($request->all()); 

    return redirect()->route('itemCRUD2.index') 
        ->with('success','Item created successfully'); 
} 

public function show($id) 
{ 
    $item = Item::find($id); 
    return view('ItemCRUD2.show',compact('item')); 
} 

public function edit($id) 
{ 
    $item = Item::find($id); 
    return view('ItemCRUD2.edit',compact('item')); 
} 

и это RoleController:

public function index(Request $request) 
{ 
    $roles = Role::orderBy('id','DESC')->paginate(5); 
    return view('roles.index',compact('roles')) 
     ->with('i', ($request->input('page', 1) - 1) * 5); 
} 

public function create() 
{ 
    $permission = Permission::get(); 
    return view('roles.create',compact('permission')); 
} 

public function store(Request $request) 
{ 
    $this->validate($request, [ 
     'name' => 'required|unique:roles,name', 
     'display_name' => 'required', 
     'description' => 'required', 
     'permission' => 'required', 
    ]); 

    $role = new Role(); 
    $role->name = $request->input('name'); 
    $role->display_name = $request->input('display_name'); 
    $role->description = $request->input('description'); 
    $role->save(); 

    foreach ($request->input('permission') as $key => $value) { 
     $role->attachPermission($value); 
    } 

    return redirect()->route('roles.index') 
        ->with('success','Role created successfully'); 
} 

public function show($id) 
{ 
    $role = Role::find($id); 
    $rolePermissions = Permission::join("permission_role","permission_role.permission_id","=","permissions.id") 
     ->where("permission_role.role_id",$id) 
     ->get(); 

    return view('roles.show',compact('role','rolePermissions')); 
} 
public function edit($id) 
{ 
    $role = Role::find($id); 
    $permission = Permission::get(); 
    $rolePermissions = DB::table("permission_role")->where("permission_role.role_id",$id) 
     ->pluck('permission_role.permission_id','permission_role.permission_id'); 

    return view('roles.edit',compact('role','permission','rolePermissions')); 
} 

модель: User.php

class User extends Authenticatable 
{ 
use Notifiable; 

protected $table = 'users'; 
/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = [ 
    'name', 'email', 'password', 
]; 

/** 
* The attributes that should be hidden for arrays. 
* 
* @var array 
*/ 
protected $hidden = [ 
    'password', 'remember_token', 
]; 
} 

Может кто-нибудь помочь мне решить эту проблему? заранее спасибо.

Обновления:

После изменения драйвера для массива в моем файле .env. CACHE_DRIVER = array Я получаю это при нажатии на элементы или роли. Попытка выяснить, как теперь назначать роли пользователям!

enter image description here

+0

Где линия 88 в 'UserController'? – Jerodev

+0

@Jerodev это он: $ userRole = $ user-> role-> pluck ('id', 'id') -> toArray(); – Naj

+0

Можете вы добавить код для вашей модели пользователя? – Jerodev

ответ

2

Вы должны добавить правильные отношения к вашей модели пользователя, прежде чем вы можете загрузить их. Вы пытаетесь загрузить свойство roles у вас User модель, но этого не существует, поэтому она возвращает null.

EntrustUserTrait необходимо добавить к вашей модели User, так как defined here.

+0

Это работает! Спасибо. Одна ошибка была решена. Чтобы исправить другой, я изменил драйвер на массив в моем .ENV-файле. CACHE_DRIVER = массив. Теперь, когда я нажимаю на роли или элементы, я получил следующее сообщение: У вас нет разрешения, как вы можете видеть на изображении выше. Теперь, пытаясь выяснить, как назначать роли пользователям – Naj

+0

Вы должны изменить это в базе данных. Кроме того, это второй вопрос, вы должны закрыть этот вопрос и создать новый для другого вопроса. – Jerodev

 Смежные вопросы

  • Нет связанных вопросов^_^