【问题标题】:Displaying selected value in a drop down with values from the database使用数据库中的值在下拉列表中显示选定的值
【发布时间】:2017-05-16 17:58:15
【问题描述】:

我有一个使用此方法从数据库中填充的下拉列表

public function view($id)
{
    $id = request()->segment(2);
    $items = Role::all(['name', 'display_name']);

    return view('text.ServicesEditUser', compact('items'));
}

然后我在数据库中以这种方式显示选择框

<select name="user_role" class="form-control">
    @foreach($items as $item)
        <option value="{{$item->name}}">{{$item->display_name}}</option>
    @endforeach
</select>

在创建记录期间正在使用生成的选择框。但是,我现在想编辑表单,并且我想将保存在数据库中的选项标记为选中。

在我知道namedisplay_name 之前,我可以轻松做到这一点

<option value="admin" @if ($role->name == "admin")selected="selected" @endif>Admin</option>
<option value="user" @if ($role->name == "user")selected="selected" @endif>User</option>
<option value="superuser" @if ($role->name == "superuser")selected="selected" @endif>Superuser</option>

如何将数据库中保存的值标记为选中?

这是角色表

这是角色用户表

【问题讨论】:

  • Role如何保存在数据库中?还有为什么你把id传给view函数却不使用呢?
  • @DestinationN 我进行了更新以包含角色表的屏幕截图。
  • 你能展示你如何获取用户的角色吗?视图中的$role包含什么?
  • @Sandeesh $items = Role::all(['name', 'display_name']);
  • @GeoffreyIsle Role::all 获取所有角色,而不是用户拥有的角色

标签: laravel


【解决方案1】:

控制器

$currentRole = Ru::where('user_id','=',Auth::id())->first();
$roles = Role::all(['name', 'display_name']);

return view('text.ServicesEditUser', compact('roles', 'currentRole'));

查看

<select name="user_role" class="form-control">
    @foreach($roles as $role)
        <option value="{{$role->name}}" {{ $role->name === $currentRole->name? 'selected' : '' }}>{{$role->display_name}}</option>
    @endforeach
</select>

顺便说一句,您的数据透视表不应该有模型。您需要使用关系来访问数据。通过适当的关系设置,您可以执行以下操作。

$currentRole = auth()->user()->role

【讨论】:

    【解决方案2】:

    您的逻辑不正确,您的角色是数据库中的记录... 相反,您应该有一个具有字段角色的用户表,并可能将其链接到角色表。并从用户表而不是角色表中选择保存的值...

    阅读更多关于如何建立一对一关系here

    【讨论】:

      猜你喜欢
      • 2018-11-30
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 2021-08-19
      • 2013-09-10
      • 2014-06-06
      • 1970-01-01
      相关资源
      最近更新 更多