php - 根据单击的复选框进行过滤
问题描述
我想根据用户单击的复选框过滤产品。我想附加复选框值并将其显示在 URL 中,并根据 URL 中的值过滤产品。我使用过onChange="this.form.submit()"
,但每次我选中复选框时,它都会用 URL 中的新值替换旧值。如何附加所有这些值并根据这些值进行过滤。
<form action="{{route('filter')}}" method="GET"
>
<div class="container">
<div class="row">
<div class="col-md-4">
Search
<input type="checkbox" name="category_id['samsung']" class="form-control" value="1" onChange="this.form.submit(){{ request()->filled('category_id.samsung') ? 'checked' :''}}">Samsung
<input type="checkbox" name="category_id['android']" class="form-control" value="2"onChange="this.form.submit(){{ request()->filled('category_id.android') ? 'checked' :''}}" >Android
<input type="checkbox" name="category_id['apple']" class="form-control" value="3" onChange="this.form.submit(){{ request()->filled('category_id.apple') ? 'checked' :''}}">Apple
</div>
</form>
我的网址是浏览器是:
http://localhost:8000/?category_id%5B%27samsung%27%5D=1
http://localhost:8000/?category_id%5B%27android%27%5D=2
http://localhost:8000/?category_id%5B%27apple%27%5D=3
当我选中另一个复选框时,值是 url 更新,实际上我需要附加它
解决方案
正如评论中所建议的,category_id[]
用作每个输入的名称属性。然后 URL 变为http://localhost:8000/?category_id[]=1
.
问题仍然存在,在每个页面加载时,复选框都会被清除。可以在以下条件下预先选择它们:
is_array(request()->input('category_id')) &&
in_array('1', request()->input('category_id')) ? 'checked' : ''
现在可以对多个项目进行过滤,URL 变成这样:
http://localhost:8000/?category_id[]=1&category_id[]=2
这是一个完整的解决方案:
<form action="{{ route('filter') }}" method="GET">
<div class="container">
<div class="row">
<div class="col-md-4">
Search
<input type="checkbox" name="category_id[]" class="form-control" value="1" onChange="this.form.submit()" {{ is_array(request()->input('category_id')) && in_array('1', request()->input('category_id')) ? 'checked' : ''}}>Samsung
<input type="checkbox" name="category_id[]" class="form-control" value="2" onChange="this.form.submit()" {{ is_array(request()->input('category_id')) && in_array('2', request()->input('category_id')) ? 'checked' : ''}}>Android
<input type="checkbox" name="category_id[]" class="form-control" value="3" onChange="this.form.submit()" {{ is_array(request()->input('category_id')) && in_array('3', request()->input('category_id')) ? 'checked' : ''}}>Apple
</div>
</div>
</div>
</form>
推荐阅读
- wordpress - 使用 WP_Image_Editor_GD::multi_resize 方法调整大小后如何保存图像?
- arduino - 使用 pubsubclient 连接到公共服务器
- swift - 我如何将 NSString 转换为字符串
- android - SwipeRevealLayout 在 recyclerview 滚动期间隐藏拖动的部分
- excel - 输出生成问题(Ps 代码运行)
- javascript - 如何使消息显示在模板中
- angular - ERROR TypeError: layer.addEventParent is not a function while setting marker for marker cluster in angular
- java - Annotation @NotEmpty doesn't check if String is null
- matplotlib - 以不规则间隔绘制日期时间 x 轴
- java - 使用 Java 在 Excel 工作表中打印空单元格相邻单元格值