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

How to build search URL pagination in Laravel 5.2?

这是我的观点 (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() !!}

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

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

或原始格式-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'
);

请注意,密钥是 same/repetitive,这在 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。