php - 如何从控制器laravel导出jstree所需的json
问题描述
我正在使用 jstree jQuery 插件将类别显示为树视图。
来自控制器的数据数组:
array:10 [
0 => array:13 [
"id" => 1
"name" => "Request 1"
"content" => "Request content 1"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => array:5 [
0 => array:13 [
"id" => 1
"name" => "Problem 1 (Request 1)"
"content" => "Problem content 1 (Request 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"request_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => array:5 [
0 => array:12 [
"id" => 1
"name" => "Solution 1 (Problem 1)"
"content" => "Solution content 1 (Problem 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
1 => array:12 [
"id" => 2
"name" => "Solution 2 (Problem 1)"
"content" => "Solution content 2 (Problem 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
2 => array:12 [
"id" => 3
"name" => "Solution 3 (Problem 1)"
"content" => "Solution content 3 (Problem 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
3 => array:12 [
"id" => 4
"name" => "Solution 4 (Problem 1)"
"content" => "Solution content 4 (Problem 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
4 => array:12 [
"id" => 5
"name" => "Solution 5 (Problem 1)"
"content" => "Solution content 5 (Problem 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
]
]
1 => array:13 [
"id" => 2
"name" => "Problem 2 (Request 1)"
"content" => "Problem content 2 (Request 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"request_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => array:5 [
0 => array:12 [
"id" => 6
"name" => "Solution 1 (Problem 2)"
"content" => "Solution content 1 (Problem 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
1 => array:12 [
"id" => 7
"name" => "Solution 2 (Problem 2)"
"content" => "Solution content 2 (Problem 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
2 => array:12 [
"id" => 8
"name" => "Solution 3 (Problem 2)"
"content" => "Solution content 3 (Problem 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
3 => array:12 [
"id" => 9
"name" => "Solution 4 (Problem 2)"
"content" => "Solution content 4 (Problem 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
4 => array:12 [
"id" => 10
"name" => "Solution 5 (Problem 2)"
"content" => "Solution content 5 (Problem 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"problem_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
]
]
]
2 => array:13 [
"id" => 3
"name" => "Problem 3 (Request 1)"
"content" => "Problem content 3 (Request 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"request_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
3 => array:13 [
"id" => 4
"name" => "Problem 4 (Request 1)"
"content" => "Problem content 4 (Request 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"request_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
4 => array:13 [
"id" => 5
"name" => "Problem 5 (Request 1)"
"content" => "Problem content 5 (Request 1)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"request_id" => 1
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
]
]
1 => array:13 [
"id" => 2
"name" => "Request 2"
"content" => "Request content 2"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => array:5 [
0 => array:13 [
"id" => 6
"name" => "Problem 1 (Request 2)"
"content" => "Problem content 1 (Request 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"request_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
1 => array:13 [
"id" => 7
"name" => "Problem 2 (Request 2)"
"content" => "Problem content 2 (Request 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"request_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
2 => array:13 [
"id" => 8
"name" => "Problem 3 (Request 2)"
"content" => "Problem content 3 (Request 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"request_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
3 => array:13 [
"id" => 9
"name" => "Problem 4 (Request 2)"
"content" => "Problem content 4 (Request 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"request_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
4 => array:13 [
"id" => 10
"name" => "Problem 5 (Request 2)"
"content" => "Problem content 5 (Request 2)"
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:04.000000Z"
"updated_at" => "2021-10-21T12:12:04.000000Z"
"request_id" => 2
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"solutions" => []
]
]
]
2 => array:13 [
"id" => 3
"name" => "Request 3"
"content" => "Request content 3"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
3 => array:13 [
"id" => 4
"name" => "Request 4"
"content" => "Request content 4"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
4 => array:13 [
"id" => 5
"name" => "Request 5"
"content" => "Request content 5"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
5 => array:13 [
"id" => 6
"name" => "Request 6"
"content" => "Request content 6"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
6 => array:13 [
"id" => 7
"name" => "Request 7"
"content" => "Request content 7"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
7 => array:13 [
"id" => 8
"name" => "Request 8"
"content" => "Request content 8"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
8 => array:13 [
"id" => 9
"name" => "Request 9"
"content" => "Request content 9"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
]
9 => array:13 [
"id" => 10
"name" => "Request 10"
"content" => "Request content 10"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
] ]
而另一方面,JStree 插件需要一个 json 格式,比如从中创建树视图:
{
"text": "Information",
"state": {
"opened": true,
"disabled": true
},
"type": "wrap",
"children": [
{
"text": "Request 1",
"type": "request",
"children": [
{
"text": "Problem 1 (Request 1)",
"type": "problem",
"children": [
{
"text": "Solution 1 (Problem 1)",
"children": [],
"id": "1-3",
"icon": "folder"
}
],
"id": "New node 2",
},
{
"text": "Problem 2 (Request 1)",
"children": [
{
"text": "Solution 1 (Problem 2)",
"children": [],
"id": "1-3",
"icon": "folder"
}
],
"id": "requestId-problemId-Solution",
"icon": "folder"
}
],
},
{
"text": "Request 2",
"type": "request",
"children": [
{
"text": "Problem 1 (Request 2)",
"icon": "folder",
},
{
"text": "ádasdasd",
"children": [
{
"text": "ádf",
"children": [],
"icon": "folder"
}
],
"icon": "folder"
},
{
"text": "many",
"children": [],
"icon": "folder"
}
],
}
]
}
如何将来自 laravel 控制器的数据数组的返回格式转换为需要 jstree 的适当格式?
解决方案
推荐阅读
- android - 在后台运行的 Android 应用不需要 Activity
- instagram - 如何从 instaloader 下载主题标签的热门帖子
- c# - 有没有办法从 gridview 列计算增值税(增值税 = 15%)?
- jmeter - 在 JMeter 中参数化源文件夹目录或文件路径
- python - 如果在 Python 中加载此文件的时间超过 X 秒,如何中断加载命令?
- c++ - Autotools:如何覆盖中间构建产品目录?
- sql-server - 传递动态视图名称和条件
- flutter - 针对特定用例在不同页面上保持相同状态
- javascript - 如何仅将特定键值对从一个对象添加到另一个对象?
- react-native - 为什么我的代码会导致我的组件出现一瞬间?