在我的数据库我的表结构是这样的:遍历类,childcategories和产品在树枝
某些类别具有孩子类别,有些不是。一个产品可以属于:
- 儿童类
- 父类(该类没有子类别)
我的数组是这样的:
范畴A是父类别。 B类 - 头也是一个父类别。 B类 - 儿童是儿童类乙 - 头。现在
我想显示这个数组是这样的:
但是我卡在如何知道它是否是一个类别或产品的列表。有人可以帮我弄这个吗?
在我的数据库我的表结构是这样的:遍历类,childcategories和产品在树枝
某些类别具有孩子类别,有些不是。一个产品可以属于:
我的数组是这样的:
范畴A是父类别。 B类 - 头也是一个父类别。 B类 - 儿童是儿童类乙 - 头。现在
我想显示这个数组是这样的:
但是我卡在如何知道它是否是一个类别或产品的列表。有人可以帮我弄这个吗?
如果您使用的是Doctrine Models(如果您使用的是Symfony,那么您应该是),那么您所做的只是循环遍历对象上的方法。
几乎没有假设的快速和肮脏的例子,例如使用@Template()注解和标准的DAO又名的EntityManager [秒],以及具有的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的文档,因为他们有这样的例子到处都是。
我会编辑此答案,如果您作出适当的响应。现在你还没有发布足够的信息来真正指导你,但希望这有助于你。
你可以使用递归宏。在宏观你要么打印的产品清单或打印类别列表中,然后调用本身..等等...
{% macro navigation(categories, products) %}
{% from '_macros.html.twig' import navigation %}
{% if categories|length > 0 or products|length > 0 %}
<ul>
{% for category in categories %}
<li>
{{ category.name }}
({{ category.children|length }} child(ren) & {{ category.products|length }} products)
{{ navigation(category.children, category.products) }}
</li>
{% endfor %}
{% for product in products %}
<li>{{ product.name }}</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
你只像一个模板使用此...
{% from '_macros.html.twig' import navigation %}
{{ navigation(array_of_categories) }}
这只是创建一个基本的嵌套无序列表集,但可以用于任何你想要的HTML,显然。
对于小提琴,请参阅http://twigfiddle.com/mzsq8z)。
小提琴呈现为以下(twigfiddle只显示HTLM,而不是东西,你可以用它来可视化)...
的数据结构看起来并不理想的你想要什么去做。父类别可以有最大数量的子类别吗?例如,类别B下是否可以有另一个类别?或者一件物品只能在两种类别下使用? – Shane
@Shane,类别B - 头下可能有另一个孩子类别。你会建议什么结构? .. – nielsv
一个类别可以同时具有子类别和产品吗? – qooplmao