Если вы используете модели Doctrine (которые, если вы используете Symfony, вы должны быть), то все, что вы делаете, - это цикл методов на объекте.
Быстрый и грязный пример с несколькими предположениями, например. используя @Template() аннотаций и стандартных объектов DAO иначе EntityManager [S], а также имеющие GetChildren() и getProducts() Методы на category.php (AKA модели/объекта)
На контроллере
/**
* @Route("/products", name="all_products")
* @Template()
*/
public function someAction()
{
...
$categories = $this->getCategoryManager()->findBy([]);
...
return [
'categories' => $categories
];
}
в шаблоне веточку
{% if categories|length > 0 %}
{% for category in categories %}
{% if category.children|length > 0 %}
... Here you create the HTML for nested ...
{% else %}
... Here you create the HTML for Category ...
{% for product in category.products %}
... Here you create the HTML for products ...
{% endfor %}
{% endif %}
{% endfor %}
{% else %}
.... some html to handle empty categories ....
{% endif %}
Если HTML для вложенной повторяется в HTML для плоских (очень вероятный сценарий), то вы можете создать и включить макрос, чтобы выплюнуть, что для вас.
Это основное, но я думаю, что это в значительной степени охватывает то, о чем вы спрашиваете, правильно ли я понимаю ваш вопрос.
Кстати, вы обязательно должны прочитать документы для ветки и Symfony, так как у них есть примеры, подобные этим везде.
Я отредактирую этот ответ, если вы ответите соответствующим образом. Прямо сейчас вы не разместили достаточную информацию, чтобы действительно вести вас правильно, но надеюсь, что это поможет.
Структура данных не выглядит идеальным для того, что вы пытаетесь делать. Существует ли максимальное число дочерних категорий, которые могут иметь родительская категория? Например, может быть другая категория в категории B? Или элемент может быть только под двумя категориями? – Shane
@ Шейн, может быть другая дочерняя категория под Категория B - Голова. Какую структуру вы бы предложили? .. – nielsv
Может ли категория иметь как дочерние категории, так и продукты, или у них есть только одна? – qooplmao