2016-11-22 36 views
0

どうすればデータベースの値を使用して、チェックボックスをオンにしたままにするかチェックを外すことができますか?私はlaravel集団からフォームモデルを使用していますし、私のチェックボックスフィールドはこれです:Laravelフォーム一括チェックボックス

Form::model($role, ['route' => ['the_route', $role->slug], 'method' => 'patch']) 

    @foreach ($permissions as $permission) 
     Form::checkbox('permission['.$permission->slug.']', 'true', null, ['class' => 'square']) 
    @endforeach 

Form::close() 

事が$role->permissionsは、このような配列を返すということです。

array:3 [ 
    "dashboard.view" => "false" 
    "user.view" => "true" 
    "user.edit" => "false" 
] 

答えて

0

三番目のパラメータはブール$checkedので、

Form::model($role, ['route' => ['the_route', $role->slug], 'method' => 'patch']) 

    @foreach ($permissions as $slug => $value) 
     Form::checkbox('permission['.$slug.']', 'true', (bool) $value, ['class' => 'square']) 
    @endforeach 

Form::close() 
1

Lavel Collectiveには、少なくとも私はどのサイトでもそれを見つけられませんでしたが、文書化されていない興味深いリソースが1つあります。あなたの2つのモデル間の関係のために与えたのと同じ名前のチェックボックスに「許可」と名をつけて、Laravel Collectiveはその関係にあるすべての入力をチェックします。あなたの特定のケースでは、$ role-> permissionは通常どんなLaravelアプリにもあるように、配列ではなくモデルを返すべきです。

{!! Form::model($role, ['route' => ['roles.update', $user->id], 'method' => 'put']) !!} 

    <div class="row form-group"> 

     @foreach($permissions as $permission) 
      <div class="col-sm-3"> 
       {!! Form::checkbox('permissions[]', $permission->id) !!} 
       {!! Form::label('permissions', $permission->name) !!} 
      </div> 
     @endforeach 

    </div> 

{!! Form::close() !!} 

//ロールモデル

class Role extends Model 
{ 

    public function permissions() 
    { 
     return $this->belongsToMany(Permission::class, 'permission_role'); 
    } 
} 

//パーミッションモデル

class Permission extends Model 
{ 

    public function roles() 
    { 
     return $this->belongsToMany(Role::class, 'permission_role'); 
    } 
} 
+0

ありがとう:

は、サンプルコードを確認してください!これは私に多くの時間を節約しました。 –

関連する問題