如何在 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。
这是我的观点 (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。