Php Spatie laravel权限给出传递的参数1的错误

Php Spatie laravel权限给出传递的参数1的错误,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我正在使用Spatial laravel权限包。创建角色时,我希望为角色分配权限,但返回错误: 参数1传递给 Spatiale\Permission\Exceptions\GuardDoesNotMatch::create()必须为 在中调用的类型字符串为null C:\xampp\htdocs\blog\vendor\spatie\laravel permission\src\Traits\haspmissions.php 在线505 控制器 公共函数存储(请求$Request) { //验证

我正在使用Spatial laravel权限包。创建角色时,我希望为角色分配权限,但返回错误:

参数1传递给 Spatiale\Permission\Exceptions\GuardDoesNotMatch::create()必须为 在中调用的类型字符串为null C:\xampp\htdocs\blog\vendor\spatie\laravel permission\src\Traits\haspmissions.php 在线505

控制器

公共函数存储(请求$Request)
{
//验证名称和权限字段
$this->validate$请求[
'name'=>'必需|唯一:'.config('permission.table_names.roles')。'max:10',
]
);
$name=$request['name'];
$role=新角色();
$role->name=$name;
$permissions=$request->permissions;
$role->save();
//循环通过所选权限
foreach($permissions作为$permission){
$p=Permission::其中('id','=',$Permission)->firstOrFail();
//获取新创建的角色并分配权限
$role=role::where('name','=',$name)->first();
$role->givePermissionTo($p);
}
return redirect()->route('roles.index')
->使用('flash_message','Role'.$Role->name.'added!');
}
刀片

<div class='col-lg-10 col-lg-offset-4'>
    <h1><i class='fa fa-key'></i> Add Role</h1>
    <hr>
    <form action="{{action('RoleController@store')}}" method="post" enctype="multipart/form-data">
        {{ csrf_field() }}
        <div class="form-group row" style="margin:5%;">
            <label for="name" class="col-sm-2 col-form-label">Name *</label>
            <input type="text" class="form-control col-sm-10" id="name" name="name"
                   placeholder="Enter your Role Name"/>
        </div>

        <h5><b>Assign Permissions</b></h5>
        <div class="form-check">
            @foreach ($permissions as $permission)
                <input class="form-check-input" type="checkbox" name="permissions[]" value="{{ $permission->id }}">
                <label class="form-check-label" for="defaultCheck1">
                    {{$permission->name}}
                </label>
            @endforeach
        </div>
        <div class="form-group row" style="margin:5%;">
            <button type="submit" class="btn btn-primary col-sm-3 col-sm-offset-3">Add Role</button>
        </div>
    </form>
</div>

添加角色

{{csrf_field()}} 名字* 分配权限 @foreach($permissions作为$permission) {{$permission->name} @endforeach 添加角色
有人能帮我解决这个问题吗

这是截图
解决方案:

$guard_模型的名称与$Request不同或为NULL请确保两者位于同一个guard“web”/“api”中

//解决方案:注释中的@VardanaBhanot

RoleController.php

public function store(Request $request)
{
    // validate role 'name' and make sure that's unique within 'roles' table
    // upon creating a role we want to make sure that it's not an empty role
    // so permissions are required
    $this->validate($request, [
        'name' => 'required|unique:roles|max:10',
        'permissions' => 'required'
      ]);

    // create the role by given name and assign it to @var $role
    $role = Role::create(['name' => $request['name']]);

  // since we are using Validator to make sure "permissions" exists 
  // we can skip the "isset($request['permission'])" call.
  foreach($request['permissions'] as $permission)
  {
    if($p = Permission::where('id', '=', $permission)->first())
    {
      $role->givePermissionTo($p);
    }
  }
}

当您执行
dd($request->permissions)
操作时,返回的是什么?@PeterSowah返回的是一个数组。您可以发布$request(dd($request->all());)中的内容。您能解释一下变量的单个赋值是如何解决问题的吗?您能发布权限模型和角色模型吗。上面的代码在我的开发环境中运行良好。感谢@Julian的支持,我修复了错误,实际上错误是gaurd_名称设置为的null@VardanaBhanot这就是为什么我要你的模型:P我会更新答案