求助多分类 URL 地址怎么拼接

问题描述

在页面筛选列表的时候,如下图所示,不知道怎么样子才能把所以的条件都拼接到url上
求助多分类 URL 地址怎么拼接

比如 我类型这边我循环出来的模板是

<a href="{{request()->url()."?type=all"}}" rel="" name="type" class="all active">全部</a>
<a href="{{request()->url()."?type=1"}}" rel="" name="type" class="all active">医院</a>
<a href="{{request()->url()."?type=2"}}" rel="" name="type" class="all active">诊所</a>

省份循环出来的模板

<a href="{{request()->url()."?shengfen=all"}}" rel="" name="type" class="all active">全部</a>
<a href="{{request()->url()."?shengfen=1"}}" rel="" name="type" class="all active">多彩</a>
<a href="{{request()->url()."?shengfen=2"}}" rel="" name="type" class="all active">橙色</a>

那么 URL 地址拼接的话
选择类型后
localhost?type=all
再次选择省份
localhost?type=all?shengfen=2
按理说应该是
localhost?type=all&shengfen=2

这个应该怎么设计才合理呢,比如前段页面模板循环出来的时候,判断当前有没有参数,有的话就&

或者js判断? 好乱啊 !!! 求大家给个方案吧

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案
request()->fullUrlWithQuery(['shengfen'=>'all']);
3年前 评论
Adachi (作者) 3年前
Adachi (作者) 3年前
liuhaiqiang999 (楼主) 3年前
liuhaiqiang999 (楼主) 3年前
讨论数量: 3
request()->fullUrlWithQuery(['shengfen'=>'all']);
3年前 评论
Adachi (作者) 3年前
Adachi (作者) 3年前
liuhaiqiang999 (楼主) 3年前
liuhaiqiang999 (楼主) 3年前

一楼给的方法让人很兴奋啊,没试过,不知道行不行,回头可以试试一楼的方法。在这之前自己专门写的一个方法就是针对这个问题的,使用很方便,分享一下,不喜勿喷!
我实际用的时候只用了第一个参数,就是把当前筛选条件以键值对的形式传入就行了,第二、三个参数没用到,忘了当时写这个方法时是怎么想的了。

/**
 * 用于列表多种条件筛选时,生成每个参数的url
 * @param [array] $currentFilter ['type'=>1] 当前参数值,如果不传此参数,调用此函数就无意义,就返回空
  * @param [array] $params ['type'=>1, 'name'=>'张三']所有参与的参数数组 key=>value,如果不传此参数,就从当前地址url中获取参数
  * @param [array] $routePath 路由命名 如果传入此参数就用route() 方法生成url, 如果不传则获取当前地址拼接参数
 */
if ( ! function_exists('generateMultipleFilterUrl')) {
    function generateMultipleFilterUrl(Array $currentFilter=[], Array $params=[], String $routePath=null) {
        if(empty($currentFilter)) return null;

        if(empty($params)) {
            $params = request()->query();
        }

        $params = array_filter(array_merge($params, $currentFilter));
        unset($params['page']); // 过滤掉page参数

        if($routePath == null) {
            $fullUrl = url()->current().'?'.http_build_query($params);
        } else {
            $fullUrl = route($routePath, $params);
        }

        return $fullUrl;
    }
}

使用示例:
file

3年前 评论
liuhaiqiang999 (楼主) 3年前

大哥,写个表单吧 :joy:

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!