【问题标题】:dynamically created checkbox marked/unmarked based on values from different table in Laravel根据 Laravel 中不同表中的值动态创建标记/未标记的复选框
【发布时间】:2018-04-25 13:06:38
【问题描述】:

我有一个表“角色”

还有另一个表'role_users'

我有一个从“角色”动态生成的复选框,如下所示:

如何根据“role_users”中对应“user_id”的值显示从“角色”表中检索到的复选框?

我认为这是:

{!! Form::open(['url' =>URL::to('admin/user/'.$profileUser->id) , 'method'=>'PUT', 'enctype'=>'multipart/form-data' ]) !!}
                    @foreach ($userRoles as $key => $userRole)
                    <tr>
                        <td width="10%">{{ Form::label($userRole->name) }}</td>
                        <td>{{ Form::checkbox( 'rolename[]', $userRole->id) }}</td>
                    </tr>
                    @endforeach
                    <tr>{{ Form::submit('Save', array('class' => 'btn', 'name' => 'roleSubmit')) }}</tr>
            </tbody>
            {{ Form::close() }}

地点:

$userRoles = DB::table('roles')->get();

如何根据“role_users”中对应“user_id”的值显示从“角色”表中检索到的复选框?

【问题讨论】:

  • 您有什么要求。?请具体
  • 我想根据 'role_users' 表中的值显示复选框(由表 'role' 的值生成)标记/取消标记,对于 'user_id'=3117
  • 你需要eager load指定用户的角色和权限。

标签: php mysql laravel checkbox eloquent


【解决方案1】:
<?php
   $role_id = 1;
?>

<table>
<tr>
<td> 
    <input type='checkbox' <?php if($role_id == 0) {echo 'checked' ;} ?> >Admin<br/>
    <input type='checkbox' <?php if($role_id == 1) {echo 'checked' ;} ?> >CIO<br/>
    <input type='checkbox' <?php if($role_id == 2) {echo 'checked' ;} ?> >IO<br/>
</td>
</tr>
</table>

【讨论】:

  • 如果我有 3 个固定角色,这将达到我的目的。管理员、CIO 和 IO。但是我的应用程序能够创建新角色。所以角色表的值是可变的。因此我必须动态检查。
【解决方案2】:

您可以传递第三个参数来标记它是否选中。

{{ Form::checkbox('agree', 1, true) }}

所以我认为你需要对第三个参数做一个条件。


 @foreach ($userRoles as $key => $userRole)
                <tr>
                    <td width="10%">{{ Form::label($userRole->name) }}</td>
                    <td>{{ Form::checkbox( 'rolename[]', $userRole->id, (bool) $userRole->id == $profileUser->role_id }}</td>
                </tr>
                @endforeach

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    我认为您需要说明创建 html 渲染的函数 Form::checkbox()

    编辑:好的,所以您有一个包含所有角色的主表和一个具有该主表外键的用户表,对吗?

    如果是这样,您可以循环 $userRoles 并为每个用户创建一个嵌套循环(在 $roles 上,这将是一个单独的主数组),对于每个 $role(in $roles) 检查它是否是等于$userRole($userRoles),如果它们相同,则选中该框,否则将取消选中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多