Привет, есть задача валидировать дерево средствами laravel, для этого там используются правила, типа таких:
'questions.0.answers.0.questions.0.text' => 'required'
'questions.0.answers.0.questions.1.text' => 'required'
'questions.0.answers.1.questions.0.text' => 'required'
Для генерации подобных правил я хочу преобразовать дерево в плоские массивы, но немогу допетрить до алгоритма :-(
К примеру есть дерево:Что будете есть?
Торт
Пирог
Суп
Какой?
Борщ
Солянка
Нужно разложить его в массивы
['Что будете есть?']
['Что будете есть?', 'Торт']
['Что будете есть?', 'Пирог']
['Что будете есть?', 'Суп']
['Что будете есть?', 'Суп', 'Какой?']
['Что будете есть?', 'Суп', 'Какой?', 'Борщ']
['Что будете есть?', 'Суп', 'Какой?', 'Солянка']
При этом данные немного сложнее:
json[
{
"text": true,
"content": "Что будете есть?",
"child": [
{
"text": true,
"content": "Торт",
},
{
"text": true,
"content": "Пирог",
},
{
"text": true,
"content": "Суп",
"child": [
{
"text": true,
"content": "Какой?",
"child": [
{
"text": true,
"content": "Борщ",
},
{
"text": true,
"content": "Солянка",
}
]
}
]
}
]
}
]
И раскладывать их надо соответственно в двумерный массив:
примерно так[[text => true, content => 'Что будете есть?']],
[[text => true, content => 'Что будете есть?'], [text => true, content => 'Торт']]
[[text => true, content => 'Что будете есть?'], [text => true, content => 'Пирог']]
[[text => true, content => 'Что будете есть?'], [text => true, content => 'Суп']]
[[text => true, content => 'Что будете есть?'], [text => true, content => 'Суп'], [text => true, content => 'Какой?']]
и так далее
Так же, возможно, в laravel есть какие то более правильные способы валидации дерева?
Спасибо!