Вот проблема,
Мне действительно нужно управлять объектами, которые могут содержать другие объекты, определенные в db. Так, например, у меня есть 5 видов ящиков. Красная коробка, зеленый ящик, синяя коробка, желтая коробка и черный ящик.
Каждый ящик может содержать одно поле, которое также может содержать поле и т.д.
То, что я получаю, является таким видом объекта:
{
"id":1,
"type":"black",
"box":
{
"id":8,
"type":"red",
"box":
{
"id":15,
"type":"green",
"box":null
}
}
}
Итак, этот пример: черный ящик, содержащий красный ящик, содержащий пустой зеленый квадрат. (черный → красный → зеленый → пустой)
Существуют условия:
- Черный ящик может содержать только синий, зеленый и красный,
- Красная коробка может содержать только зеленый и желтый,
- Желтый ящик не может содержать ничего,
- Другие поля (зеленый и синий) могут содержать что угодно
Что мне нужно сделать, это какой-то "редактор набора ящиков", я получаю объект box, который является сложным или нет (это означает, что он может иметь только один уровень ящика или несколько). Я должен представлять его в списке ящиков выбора, поэтому в примере, который я написал, он будет показывать это:
<select name="LEVEL_1">
<option value="0">NONE</option>
<option selected value="1">black</option>
<option value="8">red</option>
<option value="15">green</option>
<option value="3">blue</option>
<option value="10">yellow</option>
</select>
<br/>
<select name="LEVEL_2">
<option value="0">NONE</option>
<option selected value="8">red</option>
<option value="15">green</option>
<option value="3">blue</option>
</select>
<br/>
<select name="LEVEL_3">
<option value="0">NONE</option>
<option selected value="15">green</option>
<option value="10">yellow</option>
</select>
<br/>
<select name="LEVEL_4">
<option selected value="0">NONE</option>
<option value="15">green</option>
<option value="8">red</option>
<option value="3">blue</option>
<option value="10">yellow</option>
<option value="1">black</option>
</select>