我想根据用户单击的复选框过滤产品。我想附加复选框值并在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会更新,实际上我需要附加它
答案 0 :(得分:0)
如注释中所建议,将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>