Маршрут, соответствующий всему в symfony 3

У меня есть HomeBundle, в котором у меня есть контроллер по умолчанию, который имеет 2 действия: одно для рендеринга index.html.twig, а другое для рендеринга части навигационной панели. В моих представлениях у меня есть макет по умолчанию, который расширяет остальные представления.
Я хочу сопоставить маршрут второго действия в контроллере по умолчанию, чтобы отобразить его содержимое на любом маршруте. Это действие в 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, и я хочу, чтобы он был для всех маршрутов.

Похоже на дубликат: stackoverflow.com/questions/37403171/…

Alex 11.04.2018 12:51

Нет, это не так. Я использую аннотации и не ищу обработки ошибок, это просто элемент в списке панели навигации, который нужно заполнить из действия в DefaultController (я просто получаю все магазины и показываю их имена в панель навигации)

hadh 11.04.2018 12:54
0
2
982
1

Ответы 1

Возможно, это решение может быть тем, что вы ищете (с небольшим редактированием): Маршрутизация Symfony: соответствие чему угодно после первого узла

В вашем случае вы должны использовать аннотацию с подстановочными знаками следующим образом:

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

Я сделал это раньше, но все еще не работает, так как моя домашняя страница находится в «/», поэтому в основном 2 действия имеют Route: «/», поэтому оно выполняет первое действие и отображает ошибку, сообщающую, что «Variable Shops не существует». Я схожу с ума по этому поводу.

hadh 11.04.2018 13:47

Другие вопросы по теме