0

我有一个 HomeBundle,其中我有具有 2 个操作的默认控制器:一个用于渲染 index.html.twig,另一个用于渲染导航栏的一部分。在我的视图中,我拥有其余视图扩展的默认布局。
我想匹配 Default 控制器中第二个操作的路由,以将其内容呈现到任何路由。
这是 DefaultController 中的操作,我认为name="/"会匹配所有路由。

    /**
 * @Route("/", name="navbar_boutique")
 */
public function afficherBoutiqueProductAction()
{
    $em= $this->getDoctrine()->getManager();
    $boutiques=$em->getRepository(Boutique::class)->findAll();
    return $this->render('@Souk/Default/boutique_navbar.html.twig', array(
        "boutiques"=>$boutiques
    ));
}

这是 Boutique_navbar.html.twig:

{%extends '@Souk/layout.html.twig'%}
{%block boutique %}
<ul class="list-links">
    <li>
        <h3 class="list-links-title">Liste des Boutiques</h3></li>
    {% for b in boutiques %}
        <li><a href="{{ path('afficher_produit_boutique',{'idboutique':b.id}) }}"> {{ b.nom }} </a></li>
    {% endfor %}
</ul>
{% endblock boutique %}

至于 layout.html.twig 它包含基本模板,我只想在其导航栏中显示一个元素。(这是商店列表)

我究竟做错了什么?

ps:@Route="/test"例如,当我添加时,它仅适用于 /test 并且我希望它适用于所有路线。

4

1 回答 1

1

也许这个解决方案可能是您正在寻找的(几乎没有编辑):Symfony routing: match any after first node

在您的情况下,您将使用如下通配符注释:

/**
 * @Route("/{anything}", name="wildcard", defaults={"anything" = null}, requirements={"anything"=".+"})
 */
于 2018-04-11T11:33:12.657 回答