Symfony и TWIG: Route for Template directory не работает нормально

Я новичок в Symfony, и я создал множество HTML-шаблонов twig и эту функцию для маршрутизации в моем контроллере:

      /**
      * @Route("/{path}")
      */
      public function renderTemplate($path) {
        return $this->render('/'.$path.'/index.html.twig');
      }
      ?>

Функция renderTemplate () отлично работает для всех папок первого уровня, но не для файлов подкаталогов, потому что кажется, что она прерывается после "/". Я не хочу писать десятки новых функций Route.

Как я могу реализовать все сайты, включая подкаталоги, разделенные "/"?

Что такое безопасная практика и простое решение?

Структура моей папки шаблонов веточек такова: Папка шаблонов

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
671
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

@Route - это ваш URL, а не путь к файлу. Путь по умолчанию в Symfony (3.4) - app/Ressources/view/

Таким образом, если вы хотите достичь app/Ressources/view/default/index.html.twig, вы сделаете это:

return $this->render('default/index.html.twig');
Ответ принят как подходящий

Я только что нашел ответ здесь в документации Symfony.

Очевидно, вы можете разрешить "/" в своей переменной следующим образом:

use Symfony\Component\Routing\Annotation\Route;

class DefaultController
{
    /**
     * @Route("/share/{token}", name = "share", requirements = {"token" = ".+"})
     */
    public function share($token)
    {
        // ...
    }
}

Я назвал все свои шаблоны веток "index.html.twig" и поместил их в соответствующий путь к файлу в папке шаблонов, и теперь моя функция работает очень плавно для каждого сайта.

Возможно, мне придется изменить его позже, чтобы выполнять отдельные запросы, но это было удобное краткосрочное решение, позволяющее видеть все мои страницы с простыми и красивыми ссылками и только одной функцией маршрута в моем контроллере.

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