Laravel 5.5,复选框列表(产品),如果用户有产品,则必须选中这些产品的复选框
Laravel 5.5, List of checkboxes (products), If user has product(s), checkboxes must be checked for those products
我有一个用户 table 有一个名为产品的列,在添加用户时有一个复选框(产品)列表,我可以在勾选复选框的同时添加产品。
问题出在编辑用户中,如果用户有产品 (abc),则应在编辑用户屏幕中选中(勾选)abc 复选框。我做不到。请帮忙。
提前致谢。下面是代码
这就是我用复选框调用产品的方式
@foreach($users as $user)
{{ Form::open([ 'files' => true, 'method' => 'post', 'route' => 'users.edit', 'class' => 'form']) }}
<div class="container" style="margin-top: 0; line-height: 50px; height: 50px;">
<h4 class="module-title">Create User</h4>
</div>
<br clear="both"/>
@if (session('alert'))
<div class="alert alert-success">
{{ session('alert') }}
</div>
@endif
<div class="container">
<table class="table table-striped">
<tr>
<th>
Username
</th>
<td>
{{ Form::text('username',$user->username, ['class' => 'form-control']) }}
</td>
</tr>
<tr>
<th>
New Password
</th>
<td>
{{ Form::password('password', array('class' => 'form-control')) }}
</td>
</tr>
<tr>
<th>
Role
</th>
<td>
<div class="form-group">
<select name="select_list1" class="form-control">
@if ($user->role == "admin")
<option value="admin" selected="selected">Admin</option>
<option value="user">User</option>
@endif
@if ($user->role == "user")
<option value="user" selected="selected">User</option>
<option value="user">Admin</option>
@endif
</select>
</div>
</td>
</tr>
<tr class="products">
<th>
Product Type<br/>(After Changes please re-login)
</th>
<td>
<table>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;"><input type="checkbox" name="products[]" value="{{$product->name}}">
{{$product->name2}}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
<tr>
<th>
Active
</th>
<td>
<div class="form-group">
<select name="select_list2" class="form-control">
@if ($user->active == 1)
<option value="1" selected="selected">Yes</option>
<option value="0">No</option>
@endif
@if ($user->active == 0)
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
@endif
</select>
</div>
</td>
</tr>
</table>
<hr/>
<button type="Submit" name="save" class="btn btn-primary">
Save
</button>
<br clear="both"/>
<br/>
</div>
{{ Form::close() }}
@endforeach
你可以使用 Laravel Collective
, select
字段来实现,看看下面的代码:
Form::select('select_list1', ['user' => 'User', 'admin' => 'Admin'], $user->role, ['placeholder' => 'Choose a role']);
第一个参数表示这个字段的名称
第二个参数表示你希望按key => value
.
顺序呈现的数据数组
第三个参数表示default
值,如果没有默认值,可以使用null
第四个参数(可选)表示要在表单元素上使用的属性数组(class、占位符、id 等)
检查用户 existing
产品 match
是否是来自 product list
的产品并将其设为 checked
.
<?php $products_array = explode(",",$user->products);?>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;">
<input type="checkbox" name="products[]" value="{{$product->name}}" @if(in_array($product->name2, $products_array)) checked @endif>
{{$product->name2}}
</td>
</tr>
@endforeach
您只需要检查您的产品是否与您的用户产品匹配
如果您将 product code
保存在用户的 table 中,那么您的代码应该是这样的
<table>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;"><input type="checkbox" name="products[]" value="{{$product->name}}" {{$user->productCode == $product->code ? 'checked' : ''}}>
{{$product->name2}}
</td>
</tr>
@endforeach
</table>
但是如果您将 product name
保存在用户的 table 中,那么您的代码应该是这样的
<table>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;"><input type="checkbox" name="products[]" value="{{$product->name}}" {{$user->productName == $product->name ? 'checked' : ''}}>
{{$product->name2}}
</td>
</tr>
@endforeach
</table>
重点是,您只需要匹配您的产品 table 和用户 table 项目。这就像过滤所有具有相同值的项目。获取所有值后,再进行检查。
希望对您有所帮助 ;)
如果您像这样在产品列中存储产品:'abc'、'abc1'、'abc2'
<?php $userProductArr = explode(',',$user->products); ?>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;">
<input type="checkbox" name="products[]" value="{{$product->name}}" {{(in_array($product->name,$userProductArr) ? checked : '' }}>
{{$product->name2}}
</td>
</tr>
@endforeach
我有一个用户 table 有一个名为产品的列,在添加用户时有一个复选框(产品)列表,我可以在勾选复选框的同时添加产品。
问题出在编辑用户中,如果用户有产品 (abc),则应在编辑用户屏幕中选中(勾选)abc 复选框。我做不到。请帮忙。 提前致谢。下面是代码
这就是我用复选框调用产品的方式
@foreach($users as $user)
{{ Form::open([ 'files' => true, 'method' => 'post', 'route' => 'users.edit', 'class' => 'form']) }}
<div class="container" style="margin-top: 0; line-height: 50px; height: 50px;">
<h4 class="module-title">Create User</h4>
</div>
<br clear="both"/>
@if (session('alert'))
<div class="alert alert-success">
{{ session('alert') }}
</div>
@endif
<div class="container">
<table class="table table-striped">
<tr>
<th>
Username
</th>
<td>
{{ Form::text('username',$user->username, ['class' => 'form-control']) }}
</td>
</tr>
<tr>
<th>
New Password
</th>
<td>
{{ Form::password('password', array('class' => 'form-control')) }}
</td>
</tr>
<tr>
<th>
Role
</th>
<td>
<div class="form-group">
<select name="select_list1" class="form-control">
@if ($user->role == "admin")
<option value="admin" selected="selected">Admin</option>
<option value="user">User</option>
@endif
@if ($user->role == "user")
<option value="user" selected="selected">User</option>
<option value="user">Admin</option>
@endif
</select>
</div>
</td>
</tr>
<tr class="products">
<th>
Product Type<br/>(After Changes please re-login)
</th>
<td>
<table>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;"><input type="checkbox" name="products[]" value="{{$product->name}}">
{{$product->name2}}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
<tr>
<th>
Active
</th>
<td>
<div class="form-group">
<select name="select_list2" class="form-control">
@if ($user->active == 1)
<option value="1" selected="selected">Yes</option>
<option value="0">No</option>
@endif
@if ($user->active == 0)
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
@endif
</select>
</div>
</td>
</tr>
</table>
<hr/>
<button type="Submit" name="save" class="btn btn-primary">
Save
</button>
<br clear="both"/>
<br/>
</div>
{{ Form::close() }}
@endforeach
你可以使用 Laravel Collective
, select
字段来实现,看看下面的代码:
Form::select('select_list1', ['user' => 'User', 'admin' => 'Admin'], $user->role, ['placeholder' => 'Choose a role']);
第一个参数表示这个字段的名称
第二个参数表示你希望按key => value
.
第三个参数表示default
值,如果没有默认值,可以使用null
第四个参数(可选)表示要在表单元素上使用的属性数组(class、占位符、id 等)
检查用户 existing
产品 match
是否是来自 product list
的产品并将其设为 checked
.
<?php $products_array = explode(",",$user->products);?>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;">
<input type="checkbox" name="products[]" value="{{$product->name}}" @if(in_array($product->name2, $products_array)) checked @endif>
{{$product->name2}}
</td>
</tr>
@endforeach
您只需要检查您的产品是否与您的用户产品匹配
如果您将 product code
保存在用户的 table 中,那么您的代码应该是这样的
<table>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;"><input type="checkbox" name="products[]" value="{{$product->name}}" {{$user->productCode == $product->code ? 'checked' : ''}}>
{{$product->name2}}
</td>
</tr>
@endforeach
</table>
但是如果您将 product name
保存在用户的 table 中,那么您的代码应该是这样的
<table>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;"><input type="checkbox" name="products[]" value="{{$product->name}}" {{$user->productName == $product->name ? 'checked' : ''}}>
{{$product->name2}}
</td>
</tr>
@endforeach
</table>
重点是,您只需要匹配您的产品 table 和用户 table 项目。这就像过滤所有具有相同值的项目。获取所有值后,再进行检查。
希望对您有所帮助 ;)
如果您像这样在产品列中存储产品:'abc'、'abc1'、'abc2'
<?php $userProductArr = explode(',',$user->products); ?>
@foreach($products as $product)
<tr>
<td style="width: 32%; padding-bottom: 5px;">
<input type="checkbox" name="products[]" value="{{$product->name}}" {{(in_array($product->name,$userProductArr) ? checked : '' }}>
{{$product->name2}}
</td>
</tr>
@endforeach