Symfony和TWIG:模板目录的路由无法正常工作

时间:2018-10-27 20:13:49

标签: symfony routes directory twig

我是Symfony的新手,我创建了许多树枝html模板,并且此函数可以在我的Controller中进行路由:

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

renderTemplate()函数适用于所有第一级文件夹,但不适用于子目录文件,因为看起来好像在“ /”后插入。我不想编写许多新的Route函数。

如何实现所有站点,包括用“ /”分隔的子目录?

什么是安全的实践和简单的解决方案?

我的树枝模板文件夹的结构是这样的: Templates folder

2 个答案:

答案 0 :(得分:2)

@Route是您的URL,而不是您的文件路径。
Symfony(3.4)中的默认路径为app/Ressources/view/

因此,如果您想到达app/Ressources/view/default/index.html.twig,请执行以下操作:

return $this->render('default/index.html.twig');

答案 1 :(得分:0)

我刚刚发现答案是here in the Symfony documentation

显然,您可以在变量中允许“ /”,如下所示:

use Symfony\Component\Routing\Annotation\Route;

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

我将所有树枝模板命名为“ index.html.twig”,并将它们放在我的templates文件夹中的相应文件路径中,现在我的功能在每个站点上都运行得非常顺利。

稍后可能需要更改它以进行单个请求,但这是一种简便的短期解决方案,能够看到我的所有页面,这些页面具有简单且美观的链接,并且控制器中只有一个路由功能。