symfony - Symfony 4 twig 学说,将子菜单关联到下拉列表
问题描述
我目前正在 symfony 下做一个网站。在导航中,我用 twig 用这个结果调用我的数据库的内容。这里的代码:
{% for advert in listWorker %}
{% if advert.client != 'xxxxx' %}
<li class="sidebar-dropdown">
<a href="#">
<span>{{ advert.client }}</span>
</a>
<div class="sidebar-submenu">
<ul>
<li>
<a href="#">{{ advert.nom }}</a>
</li>
</ul>
</div>
</li>
{% endif %}
{% endfor %}
但是,我希望结果看起来像这样,我真的不知道如何将名称与同一列表中的相同客户相关联......
这是我的控制器
解决方案
由于缺少来自 $worker->findAll() 的原始数据,这里有一个 symfony 可以返回的虚拟数据示例:
$db = array(
'1' => array(
'client1' => 'name1'
),
'2' => array(
'client1' => 'name2'
),
'3' => array(
'client2' => 'name1'
),
'4' => array(
'client2' => 'name2'
),
'5' => array(
'client2' => 'name3'
),
'6' => array(
'client3' => 'name1'
),
'7' => array(
'client1' => 'name2'
)
);
然后您可以创建一个新数组,该数组将由 client 重新组合所有内容:
$final = [];
foreach($db as $item)
{
$key = key($item);
$final[$key][] = $item[$key];
}
这个数组的外观:
array(3) {
["client1"]=>
array(3) {
[0]=>
string(5) "name1"
[1]=>
string(5) "name2"
[2]=>
string(5) "name2"
}
["client2"]=>
array(3) {
[0]=>
string(5) "name1"
[1]=>
string(5) "name2"
[2]=>
string(5) "name3"
}
["client3"]=>
array(1) {
[0]=>
string(5) "name1"
}
}
将它传递给您的 index.html.twig 视图并对其进行迭代。
一些阅读材料:树枝嵌套循环
推荐阅读
- javascript - 为什么函数没有返回
- linux - Perf 脚本错误的 Dwarf Stacktrace 输出
- spring - 在迁移到 Gradle Kotlin DSL 的 Spring Boot 项目中消除警告
- ionic-framework - 如何强制有角材料跟随 ionic v5 暗模式切换
- forms - 如何在表单引导程序中对齐列
- google-apps-script - 如何交换谷歌表格中的列
- r - 分配全局/反应变量
- java - 如何等待所有按钮点击功能完成
- swift - 为什么我在 draw 中创建的 CAShapeLayer 没有成功设置动画?
- python - 如果两列具有相同的字符串或列为空,则从 python 中的 postgres 表中获取行