我的控制器输出如下所示:
D:\web\www2\application\src\CommonBundle\Controller\ClassesController.php:22:
array (size=2)
'Grade 8' =>
array (size=1)
0 =>
array (size=2)
0 =>
object(CommonBundle\Entity\GradeLevel)[363]
...
1 =>
object(CommonBundle\Entity\GradeLevel)[367]
...
'Grade 9' =>
array (size=1)
0 =>
array (size=1)
0 =>
object(CommonBundle\Entity\GradeLevel)[372]
...
这些数据来自One-T-_Many关系,我想做的是在我的html表上进行分组。下面是我创建对象数组的方法:
$grades = $this->getDoctrine()->getRepository('CommonBundle:Grade')->findAll();
$classes = array();
foreach($grades as $grade){
$classes[$grade->getName()][] = $this->getDoctrine()->getRepository('CommonBundle:GradeLevel')->findBy(array(
'grade' => $grade->getId()
));
}
return $this->render('CommonBundle:Classes:index.html.twig', array(
'classes' => $classes
));
如果这是一个简单的PHP代码,我会简单地做这样的事情:
<?php
foreach($classes as $key => $values){
...
<td colspan="4"><?php echo $key //Being the category name as indexed from the controller ?></td>
//And continue with the contents of the classes
foreach($values as $class){
<tr>
<td><?php echo $class->getName(); ?>
....
}
}
我发现很难在网上获得任何解决方案来满足我的要求。任何人都可以指出我正确的方向,因为TWIG文档似乎也是抽象的。
编辑:
下面是当前的表格结构,我必须让任何助手都能轻松了解我想要实现的目标。
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Class</th>
<th>Created on</th>
<th>Modified at</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for values in classes %}
<tr>
<!--- Category name should go here e.g "Grade 8" then next loop should list all Grades from that category -->
<td colspan="5" align="right">{{ values }}</td>
</tr>
{% for item in values %}
<tr>
<td> </td>
<td>{{ item.name }}</td>
<td>{{ item.created|date('Y-m-d H:i:s') }}</td>
<td>{{ item.modified|date('Y-m-d H:i:s') }}</td>
<td><a class="btn btn-sm btn-primary" href="#" role="button">Summary</a></td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
编辑2
答案 0 :(得分:1)
你需要在twig中做同样的事情,你将在php中做 - 循环内循环。
请记住,您的阵列中有 3级。
{% for values in classes %}
{% for item in values[0] %}
<li>{{ item.name }}</li>
{% endfor %}
{% endfor %}
使用Grade *
访问values[0]
密钥下的第一个(并且只有元素)。
从性能角度来看,这不是最好的事情,但如果您无法更改数据结构,那么您可以使用它。
答案 1 :(得分:0)
这是我在视图中的最终表格代码,可以根据需要正确呈现。
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Class</th>
<th>Created on</th>
<th>Modified at</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for group, values in classes %}
<tr>
<td colspan="5" align="left"><strong>{{ group }}</strong></td>
</tr>{% for item in values %}
<tr>
<td> </td>
<td>{{ item.name }}</td>
<td>{{ item.created|date('Y-m-d H:i:s') }}</td>
<td>{{ item.modified|date('Y-m-d H:i:s') }}</td>
<td><a class="btn btn-sm btn-primary" href="#" role="button">Summary</a></td>
</tr>
{% endfor %}
{% endfor %}
</tbody>