2017-08-31 35 views
2

我有以下與Form Collective軟件包一起使用的代碼,但由於軟件包尚未更新到5.5,因此此時無法正常工作。我也使用Spatie的Laravel許可包Laravel 5.5 - 如果角色具有權限,請選中複選框

我的代碼是

@foreach ($permissions as $permission) 

    {{Form::checkbox('permissions[]', $permission->id, $role->permissions) }} 
    {{Form::label($permission->name, ucfirst($permission->name)) }}<br> 

@endforeach 

我相信這是剛剛通過permissions循環,如果permission屬於當前role選中此複選框。

如何在不使用包的情況下實現此目的?

我已經試過目前

@foreach ($permissions as $permission) 

    <div class="checkbox"> 
     <label> 
      {{ ucfirst($permission->name) }} 
     </label> 
     <input type="checkbox" name="permissions[]" value="{{ $permission->id }}"> 
     <br> 
    </div> 

@endforeach 

但我不知道如何安裝基於角色是否已在列表中的權限檢查屬性。

+0

這實際上並不取決於Laravel本身,但它是相當的HTML問題。無論如何,我發佈答案低於 – Desh901

+0

不,它是依賴於Laravel –

回答

5

checked屬性只是添加到複選框HTML:

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" checked> 

,如果你需要將其設置在一個條件中使用下面的代碼:

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" @if(/* some condition */) checked @endif> 

編輯

由於在我添加一些細節之前,我不明白這個問題。

假設你Role模型具有連接權限的集合,它是存儲在屬性$role->permissions你可以做

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" @if($role->permissions->contains($permission)) checked @endif> 

這樣,你可以檢查你的角色有id爲$permission->id的權限。

+0

這沒有幫助,我知道我可以添加一個檢查屬性,但我需要了解如何查詢角色,以查看是否存在權限來檢查框 –

+0

哦,我明白了,這個問題本身並不是很清楚,我會編輯我的答案 – Desh901

+0

它現在應該解決您的問題 – Desh901

2

試試這個:

@foreach ($permissions as $permission) 

    <div class="checkbox"> 
     <label> 
      {{ ucfirst($permission->name) }} 
     </label> 
     <input type="checkbox" name="permissions[]" value="{{ $permission->id }} {{($role->permissions == $permission->id) ? 'checked' : ''}}"> 
     <br> 
    </div> 

@endforeach 
+0

我所有的複選框均爲空,但我有3個角色具有不同的權限,因此應該期望看到一對至少已被選中的 –

+0

你是否將權限保存在數據庫中? –

+0

是的,那是因爲'$ role-> permissions'是一個集合,'$ permission-> id'是一個整數。所以基本上你將整個集合與一個id進行比較,並且總是返回false。 – Desh901