2016-11-22 145 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有一個有趣的資源,沒有記錄,至少我從來沒有發現它在任何網站。將您的複選框命名爲與您的兩個模型之間的關係相同的名稱,例如「權限」,然後Laravel Collective將檢查所有關係中的輸入。在你的具體情況下,$ role->權限應該返回一個模型,而不是數組,就像通常在任何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

謝謝!這節省了我很多時間。 –