如何标记复选框状态Laravel

时间:2017-08-19 14:15:30

标签: php laravel laravel-5 laravel-5.4

我在Roles and Permission工作。

我已从permissions表中获取所有权限。我想显示superadmin的所有可用权限,同时如果他已经有了一些权限,那么应该选中复选框,如果有的话,则不应该选中复选框

Permisson表格包含字段:id,name,display_name,description,timestamp

roles表:id,name,display_name,description,timestamp

permission_user表:permission_id,user_id

这是当前状态:http://imgur.com/a/bfveP

Rolecontroller:

public function edit($id)
    {
        $role = Role::where('id', $id)->with('permissions')->first();
        $permissions = Permission::all();

     //   dd($role);//i am getting permission of that role
        return view('manage.roles.edit')->with('permissions',$permissions)-   >with('role',$role);
    }

edit.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">

         <div class="panel panel-default">
                <div class="panel-heading">Edit</div>

                <div class="panel-body">
               form...
                </div>
            </div>


            <div class="panel panel-default">
                <div class="panel-heading">Edit</div>

                <div class="panel-body">


     @foreach( $permissions as $permission )
<p>
<input type="checkbox" 
name="permissions[]" 
id="perm_{{ $permission->id }}" 
{{ in_array($permission->id, $role->permissions->pluck('id') ) ? 'checked="checked"' : '' }} 
value="{{ $permission->id }}">

{{ $permission->display_name }}
</p>
@endforeach
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

4 个答案:

答案 0 :(得分:0)

更改

{{$role->display_name?'checked="checked"':''}}"

{{$role->display_name }}" {{Auth::user()->can($permission) ?'checked="checked"':''}}>

这将为您提供以下代码段

<p>
  <input type="checkbox" name="" id="{{$role->display_name }}" {{Auth::user()->can($permission) ?'checked="checked"':''}}>
  {{$permission->display_name}}
</p>

这会将id设置为显示名称,并使用coalesce运算符来检查当前经过身份验证的用户(或您更改的用户)是否具有角色$role

答案 1 :(得分:0)

来自@Milo的代码应该有效,但我的猜测是因为它没有与用户连接而无法正常工作..

而不是Auth :: user() - &gt; can($ permission),如果角色包含该权限参数,请尝试在角色模型上创建一个返回布尔值的方法。像$ role-&gt;之类的东西包含($ permission)。

然后做一些事情,比如列出id和名字(注意不要把它们放入其中),然后,我经常做像@if($ role-&gt; contains($ permission))checked =&#34;检查&#34; @endif

答案 2 :(得分:0)

首先要检查的创建方法是已在角色模型中添加的权限

public function isPermissionExist($id)
{
foreach($this->permissions as $permission){
if($permission->id == $id)
return true;
}
return false;
}

下一步在视野中

@foreach( $permissions as $permission )
<p>
<input type="checkbox" 
name="permissions[]" 
id="perm_{{ $permission->id }}" 
@if($role->isPermissionExist($permission->id)) checked @endif 
value="{{ $permission->id }}">
{{ $permission->display_name }}
</p>
@endforeach

答案 3 :(得分:0)

在edit.blade.php

中试试
<label class="checkbox-inline "for="perm[{{ $permission->id }}]">
      <input id="perm[{{ $permission->id }}]" name="perm[{{ $permission->id }}]" type="checkbox" value="{{ $permission->id }}"
       @if($role->permissions->contains($permission->id)) checked=checked @endif
       > {{ $permission->name }}
 </label>