我正在尝试实现一种新的方法,让用户使用Slim Select JS库将数据输入到HTML中。
我有基本的功能,有一个预先填充的<option>项目列表。
最初,PHP代码将从数据库(现在在MongoDB中)获取名称列表,然后在创建<select>元素时将其循环起来。
使用Slim Select,您可以传入一个“数据数组”作为JS脚本的参数。手动创建的格式如下:
var jsPlayers2 = [
{"placeholder": true, "text": "Type Name"},
{"text": "Ernie Els", "value": "abc1"},
{"text": "Rory McIlroy", "value": "abc2"},
{"text": "Tiger Woods", "value": "abc3"}
];
new SlimSelect({
select: '#slim-select',
data: jsPlayers2, // THIS WOULD BE REPOINTED TO THE JSPLAYERS ARRAY VAR...
onChange: (info) => {
console.log(info)
}
})当前返回的MongoDB文档结构是:
var jsPlayers = [{
"_id": {
"$oid": "62b49410e63c2f8469089189"
},
"name": "Tiger Woods",
"clubs": [{
"clubId": {
"$oid": "6076030465508936f00e086c"
},
"name": "Jupiter FL",
"nickName": "Jupiter",
"logoPath": "jupiter.png"
}]
}, {
"_id": {
"$oid": "609d0993906429612483cfb1"
},
"name": "Ernie Els",
"clubs": [{
"clubId": {
"$oid": "6076030465508936f00e086c"
},
"name": "Wentworth UK",
"nickName": "Wentworth",
"logoPath": "wentworth.png"
}]
}, ...
}];我已经将这个变量的echo简化为一个新的JS变量:
var jsPlayers = <?php echo json_encode($players); ?>;如何才能从每个文档中选择我需要的字段?或者,当我将数组元素添加到slim-select.data属性时,是否存在过滤它们的方法?
发布于 2022-07-05 10:51:51
您需要循环遍历播放机,以创建要以JSON形式输出的数组。就像这样:
$options = [];
foreach ($players as $player) {
$options[] = (object)["text" => $player->name,
"value" => $player->getId()];
}
echo json_encode($options);这只会输出JSON。
请注意,我使用了$player->getId(),这可能对您不起作用。如果玩家是真正的对象,那么您可以自己定义一个方法来获取他们的id。
https://stackoverflow.com/questions/72867886
复制相似问题