提问人:Sebastien D 提问时间:11/14/2023 更新时间:11/14/2023 访问量:40
如何在symfony Twig的navBar中制作for循环
How to make a for loop in a navBar in symfony Twig
问:
我有一个带有下拉菜单的导航栏,我希望当您单击“国家/地区”按钮时,它会显示数据库中的所有国家/地区,为此,我首先创建了一个服务,允许您检索数据库中的所有国家/地区,这里是:
<?php
namespace App\Service;
use App\Repository\PaysRepository;
use Doctrine\ORM\EntityManagerInterface;
class PaysService
{
private $paysRepository;
public function __construct(PaysRepository $paysRepository){
$this->paysRepository = $paysRepository;
}
public function menuPays()
{
$payList = $this->paysRepository->findAll();
return $payList;
}
}
然后我创建了一个控制器,它允许您从服务中检索信息,这里是控制器:
#[Route('/nav', name: 'nav')]
public function nav(PaysService $paysService):Reponse
{
$payList = $paysService->menuPays();
return $this->render('nav.html.twig', [
'payList' => $payList
]);
}
Il permet de donner au templates “nav” les nom des pays.
然后我创建了允许您显示导航栏的“nav”文件,并在其中创建了一个 for 循环来遍历 $payList 变量中存在的每个国家/地区。
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs- toggle="dropdown" aria-expanded="false">
Pays
</a>
<ul class="dropdown-menu">
{% for pays in payList %}
<li><a class="dropdown-item" href="#">{{ pays.nom}}</a></li>
{% endfor %}
</ul>
</li>
但问题是,当我单击“国家/地区”按钮时,它没有向我显示任何内容,为了解决这个问题,我查看了服务是否恢复了数据库中的数据,这是正确的,然后我在 twig.yaml 文件中查看了我的服务配置
twig:
debug: true
default_path: '%kernel.project_dir%/templates'
globals:
payList: 'App.service.PaysService'
答: 暂无答案
评论
<li>test test</li>
{{ dump(payList) }}
href
#