如何在Laravel 5.2中构建搜索URL分页?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Laravel 5.2中构建搜索URL分页?相关的知识,希望对你有一定的参考价值。

以下是我对该表格的看法(html): -

{{ Form::open(array('url' => '/search/','method'=>'get', 'id'=>"search_form_header",'name'=>"search_form_header"))}}
<div class="filter_clumn">
    <ul>
        <li><strong>Looking for</strong></li>
        <?php foreach($diningType as $keyDining=>$ditypeval){ ?>
        <li>
            <div class="checkbox">
              <label>
                <input type="checkbox" name="looking_for[]" id="looking_for_<?php echo $keyDining;?>" value="<?php echo $ditypeval->id;?>" <?php if(isset($requestLookingFor) && in_array($ditypeval->id, $requestLookingFor))  echo "checked";?>/>
                <span class="cr rightcr"><i class="cr-icon glyphicon glyphicon-ok"></i></span>
                <?php echo $ditypeval->name; ?>
              </label>
            </div>
        </li>
        <?php } ?> 
    </ul>
</div>
<a href="javascript:void(0);" class="btn yel_btn big_btn" onclick="document.getElementById('search_form_header').submit()">Apply</a>
{!! Form::close() !!}

用户可以选择多个复选框,因此,复选框被视为数组。所以表单提交后的URL是

http://demotest.com/laravel/demo_project/public/search?looking_for[]=1&looking_for[]=2&looking_for[]=3

或者在raw-url中: -

http://demotest.com/laravel/demo_project/public/search?looking_for%5B%5D=1&looking_for%5B%5D=2&looking_for%5B%5D=3

现在,代码工作正常,我可以获得所需的数据。问题是在创建分页链接时: -

在html中,分页设置如下: -

@if (!empty($link))
<div class="col-sm-12">
{!! $link->appends($urlString)->links() !!}
</div>  
@endif

$ urlString是laravel技术用于创建分页URL的数组。在laravel中,阵列采用以下形式: -

array('param1'=>'param_value1', 
'param2'=>'param_value2',
'param3'=>'param_value3'
);

但由于我使用looking_for []作为数组,我的数组必须如下: -

array('looking_for[]'=>'1', 
'looking_for[]'=>'2',
'looking_for[]'=>'3'
);

请注意,密钥是相同/重复的,这在PHP中是不允许的。我在表单提交后创建这样的数组: -

$dining_ids = $request->input('looking_for'); 
foreach($dining_ids as $di)
{
    $urlString['looking_for[]'] = $di;
}

但不是创造

array('looking_for[]'=>'1', 
'looking_for[]'=>'2',
'looking_for[]'=>'3'
);

阵列正在变成

array('looking_for[]'=>'3'
);

仅取最后一个值,可能会覆盖键值而不是插入具有相同key_name的新键。我还有什么方法可以解决这个问题?

答案

经过一些研究,我找到了问题的解决方案。其他人可能会面临这样的问题,所以我在这里记录答案。

问题是手动创建数组: -

array('looking_for[]'=>'1', 
'looking_for[]'=>'2',
'looking_for[]'=>'3'
);

一种解决方案是改变

{!! $link->appends($urlString)->links() !!}

进入以下内容: -

{{ $link->appends($_GET)->links() }}

上面的代码自动将$_GET参数放入分页URL。

以上是关于如何在Laravel 5.2中构建搜索URL分页?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 手动分页实现

Select2 Ajax Laravel 5.2 - 分页结果不起作用?

如何在 laravel 5.2 中从 url 中删除 public

Laravel 5.2 分页自定义

laravel 5.2 分页链接中添加随机字符

如何在Laravel 5.2中创建QR码?