symfony 如何将带有嵌套属性的JS对象添加到URL中?

j5fpnvbx  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(97)

我有一个类似于这个结构的对象:

filters = {
    filters: {
        categoryFilters: {
            mainCategory: value1,
            subCategory: value2
        }
    }
}

我正在使用以下方法通过添加活动过滤器/排序来动态更新URL:

url.searchParams.set('mainCategory', "val1")
window.history.replaceState(null, null, url)

我需要传递具有上面解释的结构的对象,所以我可以在PHP中将其用作关联数组,例如:

$filters = [
    "categoryFilters" => [
        "mainCategory" => val1,
        "childCategory" => val2,
        ...
    ]
]

我在没有嵌套属性的情况下向URL添加参数没有问题,但我在这一点上遇到了困难。目标是从URL中获取数据,因此URL的接收方(例如通过复制粘贴)将获得与发送方相同的结果。
我用的是Symfony。

emeijp43

emeijp431#

这比看起来要容易,尽管如果您可以将对象传递给URLSearchParams,它会为您解析,那就更好了。
但是,您需要做的就是使用方括号(没有引号)解析每个唯一路径,并添加为具有关联值的参数键:

url.searchParams.set('[filters][categoryFilters][mainCategory]', 'value1')

可以编写一个函数来从一个对象执行此操作,但这就是它要做的(线性化数组的唯一键路径),然后将其追加(如URLSearchParams)或设置(如您的示例)。

相关问题