我是Symfony的新手,我创建了许多树枝html模板,并且此函数可以在我的Controller中进行路由:
/**
* @Route("/{path}")
*/
public function renderTemplate($path) {
return $this->render('/'.$path.'/index.html.twig');
}
?>
renderTemplate()函数适用于所有第一级文件夹,但不适用于子目录文件,因为看起来好像在“ /”后插入。我不想编写许多新的Route函数。
如何实现所有站点,包括用“ /”分隔的子目录?
什么是安全的实践和简单的解决方案?
我的树枝模板文件夹的结构是这样的: Templates folder
答案 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文件夹中的相应文件路径中,现在我的功能在每个站点上都运行得非常顺利。
稍后可能需要更改它以进行单个请求,但这是一种简便的短期解决方案,能够看到我的所有页面,这些页面具有简单且美观的链接,并且控制器中只有一个路由功能。