【问题标题】:A route to match everything in Symfony 3匹配 Symfony 3 中所有内容的路线
【发布时间】:2018-04-11 10:48:49
【问题描述】:

我有一个 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,我希望它适用于所有路由。

【问题讨论】:

  • 不,不是。我正在使用注释并且我不是在寻找错误处理,它只是导航栏列表中的一个元素,必须从 DefaultController 中的操作填充(我只是获取所有商店并在导航栏)

标签: php routing twig symfony3.x


【解决方案1】:

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

在你的情况下,你会像这样使用通配符注释:

/**
 * @Route("/{anything}", name="wildcard", defaults={"anything" = null}, requirements={"anything"=".+"})
 */

【讨论】:

  • 我之前做过,但仍然无法正常工作,因为我的主页位于“/”,所以基本上 2 个操作有 Route:“/”,所以它执行第一个操作并显示错误消息“可变商店不存在”。我正在为此失去理智。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 2013-03-14
  • 2011-07-09
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多