2016-09-29 88 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