2016-09-29 53 views
0

下的相關表格中呈現下拉列表我有2個表格。員工表和角色表。在我的employee.show刀片中,我想呈現已分配或可分配角色的下拉列表。我沒有使用集體形式,並且因爲所有教程都使用了這些內容,所以有點卡住了。Laravel從僱員表

我控制器

public function show($employee) 
{ 
    $employee = Employees::find($employee); 
    $roles = Roles::pluck('role_name', 'id'); 
return view('employees.show')->withEmployee($employee)->withRoles($roles); 
} 

和我show.blade。問題是我如何從數據庫中提取所有其他角色的完整列表,以便用戶更新?

<div class="form-group"> 
<label class="col-md-4 control-label" for="roles_id">Role</label> 
<div class="col-md-4"> 
<select id="roles_id" name="roles_id" class="form-control"> 
<option value="{{ $employee->roles->id }}">{{ $employee->roles->role_name }}</option> 
</select>    
</div> 
</div> 
+0

我會在想你想創建從數據庫中的所有可用角色的下拉列表中正確的,但預選擇與用戶的當前角色是否有任何列表? – Jonathon

+0

是的。@ Jonathon –

回答

0

你在控制器中做了什麼似乎是正確的。但是,您的觀點應該循環使用角色併爲其創建選項。請記住,您已使用Role::pluck('role_name', 'id'),它將返回一個'id' => 'role_name'的數組。

您可以通過使用三元語句將選定的屬性添加到員工的角色選項來決定選擇哪一個,該三元語句比較員工的role_id到我們當前在循環中查看的role_id

嘗試這樣:

<select name="roles_id"> 
    <option value="">Select...</option> 
    @foreach ($roles as $roleId => $roleName) 
     <option value="{{ $roleId }}"{!! $employee->role_id == $roleId ? ' selected' : '' !!}>{{ $roleName }}</option> 
    @endforeach 
</select> 
+0

謝謝。第一次工作。 假設你有roleID,它的含義與role_id相同。我已經修改過,所以模式在各種觀點上是一致 再次感謝。 # –

+0

沒問題。 '@ foreach'幾乎可以翻譯成一個PHP'foreach'語句,你可以擁有'$ key => $ value',所以'$ roleId'指的是由'pluck'返回的數組的鍵,在你的情況下請參閱角色對象的'id'。 – Jonathon