繁体   English   中英

Laravel 4-重新填充表单以使用多个复选框进行编辑

[英]Laravel 4 - Repopulating form for edit with multiple check boxes

我很难弄清楚如何重新填充其中带有复选框的编辑表单。 我认为最令人困惑的部分是因为它们来自数据透视表。

我有用户,权限和users_permissions表。

为了快速演示表的外观,我运行了此查询并提供了结果的屏幕截图。

return $userPermissions = User::with('permissions')->find($id);

具有权限的用户表的输出

在我的表单中,我暂时只有两个权限复选框,直到概念生效为止,然后我将添加一个foreach循环并从数据库中获取它们,但现在我具有以下内容:

<div class="form-group">
    <label>
        {{ Form::hidden('permissions[4]', '0', ['class' => 'checkbox-inline']) }}
        {{ Form::checkbox('permissions[4]', '1', ['class' => 'checkbox-inline']) }}
        Manage Content
     </label>
 </div>
 <div class="form-group">
     <label>
         {{ Form::hidden('permissions[3]', '0', ['class' => 'checkbox-inline']) }}
         {{ Form::checkbox('permissions[3]', '1', ['class' => 'checkbox-inline']) }}
         Manage Users
     </label>
  </div>

我不确定这是否有用,但是当我第一次创建用户时,我创建了一个权限数组来附加到新用户。 这是代码

public function createUserPermissionsArray($input)
{
    $permissionsArray = [];
    $permissions = $input['permissions'];

    foreach ($permissions as $id => $value)
    {
        if ($value == 1)
        {
            array_push($permissionsArray, $id);
        }
    }
    $this->saveNewUserToDatabase($input, $permissionsArray);

}

我真的需要一些有关如何解决此问题的指导。 谢谢

最近,我进行了类似的工作,不同的是,我给组分配了权限,然后将用户分配给了这些组。 例如,对于GroupController::edit()我有以下代码:

public function edit($id)
{
    if(!permitted('group.edit')) {
        return Redirect::route('user.dashboard');
    }

    $group = Group::find($id);
    $permissions = Permission::all();

    return View::make('admin.group.edit', [
        'group' => $group, 
        'permissions' => $permissions, 
        'assigned' => $group->permissions->lists('id')
    ]);
}

然后,在视图的局部表单( admin.group.partials.form )中,我具有以下代码来处理权限:

@foreach($permissions as $permission)
    <div class="row">
        @if(isset($assigned))
            {{ Form::checkbox(
                'permissions[' . $permission->ident .']', 
                $permission->id, 
                in_array($permission->id, $assigned)) 
            }}<label for="permissions">{{ $permission->ident }} - {{ $permission->description }}</label>
        @else
            {{ Form::checkbox(
                'permissions[' . $permission->ident .']', 
                $permission->id) 
            }}<label for="group">{{ $permission->ident }} - {{ $permission->description }}</label>
        @endif
    </div>
@endforeach

我已经尽力格式化了,以便于阅读。 基本上,我有一个create.blade.phpedit.blade.php ,它们都包含部分表单,但是每个文件都处理表单的打开和关闭(用于编辑的模型绑定,用于创建的正常打开),以及if语句。

不幸的是,我找不到更好的方法来实现这一目标。 我希望这可以帮助你。

PS:作为旁注,我实际上已经编写了一个有关如何使用Laravel创建健壮且简单的ACL的教程,如果您愿意,我可以进行链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM