Я пытаюсь работать с предварительно созданной библиотекой для настройки телефонов SIP. Они, похоже, использовали JSON для шаблонов, и я на незнакомой территории. Существует много моделей/моделей, а некоторые из них имеют несколько шаблонов. Я хотел бы получить содержимое шаблона и преобразовать его в форму php. Я не уверен, как кодировать имена разных разделов. Я хотел бы написать одну функцию PHP, которая делает все это независимо от используемого файла шаблона. Вот два из шаблонов я работаю с:Интерпретация стороннего JSON-файла в форму PHP
{
"template_data":{
"category":[
{
"name":"keys",
"subcategory":[
{
"name":"Soft Keys (9480i\/6755i\/6757i)",
"item":[
{
"description":"Soft Keys (9480i\/6755i\/6757i)",
"type":"loop",
"loop_start":"1",
"loop_end":"18",
"data":{
"item":[
{
"variable":"$softkey_type",
"default_value":"empty",
"category":"keys",
"description":"Soft Key {$count} Type",
"type":"list",
"data":[
{
"text":"Empty",
"value":"empty"
},
{
"text":"Services",
"value":"services"
},
{
"text":"Speed Dial",
"value":"speeddial"
},
{
"text":"Line",
"value":"line"
},
{
"text":"BLF",
"value":"blf"
},
{
"text":"List",
"value":"list"
},
{
"text":"Do Not Disturb",
"value":"dnd"
},
{
"text":"XML URL",
"value":"xml"
},
{
"text":"BLF Transfer",
"value":"blfxfer"
},
{
"text":"Intercom",
"value":"icom"
},
{
"text":"Pickup",
"value":"pickup"
},
{
"text":"Flash",
"value":"flash"
},
{
"text":"Special Prefix Code",
"value":"spre"
},
{
"text":"Park",
"value":"park"
},
{
"text":"Directory",
"value":"directory"
},
{
"text":"Callers",
"value":"callers"
}
]
},
{
"variable":"$softkey_label",
"default_value":"",
"description":"Soft Key {$count} Label",
"type":"input"
},
{
"variable":"$softkey_value",
"default_value":"",
"description":"Soft Key {$count} Value",
"type":"input"
},
{
"variable":"$softkey_states",
"default_value":"Any",
"description":"Soft Key {$count} States",
"type":"list",
"data":[
{
"text":"Any",
"value":"connected,idle,incoming,outgoing"
},
{
"text":"Connected",
"value":"connected"
},
{
"text":"Idle",
"value":"idle"
},
{
"text":"Incoming",
"value":"incoming"
},
{
"text":"Outgoing",
"value":"outgoing"
},
{
"text":"Idle or Incoming",
"value":"idle,incoming"
},
{
"text":"Connected or Outgoing",
"value":"connected,outgoing"
},
{
"text":"None (Hide Button)",
"value":[
]
}
]
},
{
"type":"break"
}
]
}
}
]
}
]
}
]
}
}
и вот еще:
{
"template_data":{
"category":[
{
"name":"keys",
"subcategory":[
{
"name":"Multi Function Keys",
"item":[
{
"variable":"$key_mode_01",
"default_value":"",
"description":"Key 1 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_01",
"default_value":"Speed Dial 1",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_01",
"default_value":"*01",
"description":"Value #1",
"type":"input"
},
{
"type":"break"
},
{
"variable":"$key_mode_02",
"default_value":"",
"description":"Key 2 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_02",
"default_value":"Speed Dial 2",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_02",
"default_value":"*02",
"description":"Value #2",
"type":"input"
},
{
"type":"break"
},
{
"variable":"$key_mode_03",
"default_value":"",
"description":"Key 3 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_03",
"default_value":"Speed Dial 3",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_03",
"default_value":"*03",
"description":"Value #3",
"type":"input"
},
{
"type":"break"
},
{
"variable":"$key_mode_04",
"default_value":"",
"description":"Key 4 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_04",
"default_value":"Speed Dial 4",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_04",
"default_value":"*04",
"description":"Value #4",
"type":"input"
},
{
"type":"break"
},
{
"variable":"$key_mode_05",
"default_value":"",
"description":"Key 5 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_05",
"default_value":"Speed Dial 5",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_05",
"default_value":"*05",
"description":"Value #5",
"type":"input"
},
{
"type":"break"
},
{
"variable":"$key_mode_06",
"default_value":"",
"description":"Key 6 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_06",
"default_value":"Speed Dial 6",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_06",
"default_value":"*06",
"description":"Value #6",
"type":"input"
},
{
"type":"break"
},
{
"variable":"$key_mode_07",
"default_value":"",
"description":"Key 7 Mode",
"type":"list",
"data":[
{
"text":"Speed Dial",
"value":"0"
},
{
"text":"BLF",
"value":"1"
},
{
"text":"Presence Watcher",
"value":"2"
},
{
"text":"Eventlist BLF",
"value":"3"
}
]
},
{
"variable":"$key_name_07",
"default_value":"Speed Dial 7",
"description":"Key Name",
"type":"input"
},
{
"variable":"$speed_dial_07",
"default_value":"*07",
"description":"Value #7",
"type":"input"
}
]
}
]
}
]
}
}
Похоже, что это было разработано, чтобы сделать именно то, что я хочу, я просто не знаю, как начать. Я могу получить данные из файлов шаблонов, но оттуда пропал. Я пробовал работать с json_decode, но результат не кажется более удобным для работы. Я также попытался использовать php для получения содержимого шаблона, а затем с помощью javascript для его демонтажа. Это своего рода работа, но для каждого файла потребуется больше статических переменных, и если поставщик файлов что-то изменит, может потребоваться больше времени на редактирование. Если кто-нибудь знает про самый простой способ приблизиться к этому, мы будем очень благодарны.
Я пытаюсь избежать статически кодирования для каждого возможного имени переменной, если это возможно. В идеальном мире мне нужно будет искать определенные переменные настройки (радио, список, ввод и т. Д.), А затем показывать соответствующий тип ввода формы на основе этого значения, но я не знаю, какие ключи будут из файла в файл. Чтобы сделать вещи более интересными, я не знаю, что ценности будут даже согласованными. – PHPBandJ
Хмм сложно, наверное, все, что я бы предложил, о чем ты уже подумал. – tattooedgeek