Laravel 在 spatie-permission 的 foreach 循环中给出错误

Posted

技术标签:

【中文标题】Laravel 在 spatie-permission 的 foreach 循环中给出错误【英文标题】:Laravel giving error in foreach loop in spatie-permission 【发布时间】:2019-06-16 14:38:38 【问题描述】:

我正在应用 Spatie Laravel 权限和编码来为角色添加权限。 并遇到了错误。

public function store(Request $request) 
//Validate name and permissions field
    $this->validate($request, [
        'name'=>'required|unique:'.config('permission.table_names.roles').'|max:10',
        ]
    );

    $name = $request['name'];
    $role = new Role();
    $role->name = $name;

    $permissions = $request['permissions'];
    $role->save();
//Looping thru selected permissions
    if(count($permissions>0))
    foreach ($permissions as $permission) 

        $p = Permission::where('id', '=', $permission)->firstOrFail(); 
     //Fetch the newly created role and assign permission
        $role = Role::where('name', '=', $name)->first(); 
        $role->givePermissionTo($p);
    


    return redirect()->route('roles.index')
        ->with('flash_message',
         'Role'. $role->name.' added!'); 

所以如果有人请帮我解决这个问题。

【问题讨论】:

dd($request['permissions']) - 你得到了什么? 我得到“3”@SougataBose 数字“3”? 你在使用输入数组吗?喜欢permissions[]的形式? 使用数组作为@SougataBose 提到的权限。它将解决您的问题。 【参考方案1】:

在你的提交表单中使用这个

<input type="checkbox" name="permissions[]" value=" $r->id "> $r->display_name </li>

在控制器中像这样捕获这些权限

$permissions = $request->permissions;

【讨论】:

以上是关于Laravel 在 spatie-permission 的 foreach 循环中给出错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上通过 Laravel Installer 安装 Laravel?

在 Mac 上安装 Laravel 会抛出 laravel,即使在设置 PATH 后也找不到

Laravel 在控制器中使用非 Laravel Composer 包

如何在 Laravel 8 中使用 srmklive/laravel-paypal v3

laravel怎么在中间表插入数据

在 laravel 中创建一个下拉列表来选择用户角色 - laravel