我正在创建一个新的控制器提供程序,我将在几个项目中使用,我需要在此控制器提供程序的目录中包含几个twig模板,以便在该提供程序的某些路由中使用。我想避免将所有模板文件复制到项目目录中,以用于将要使用此控制器提供程序的每个项目(将其放在twig.path
指定的目录下),所以我的问题是:
如何呈现不在twig.path
目录下的模板?我可以告诉twig服务提供商呈现特定路径,例如控制器提供程序文件中的__DIR__.'/views/some.template.twig'
吗?
答案 0 :(得分:4)
您可以使用$ app ['twig.loader.filesystem']访问twig loader。
例如,将它放在connect方法
中的控制器类中$app['twig.loader.filesystem']->addPath(
$pathToTemplates
);
还存在Twig_Loader_Filesystem :: prependPath()
您还可以为路径指定名称空间。要做到这一点,只需添加名称空间作为第二个参数,例如'NAMESPACE'。在这种情况下,您可以通过$app['twig']->render('@NAMESPACE/pathToATemplate');
访问模板。注释命名空间之前的@ -char。
答案 1 :(得分:1)
这样的事情应该有效
$app['twig'] = $app->share($app->extend('twig', function($twig) use ($yourNewPath) {
$twig->addLoader(new \Twig_Loader_Filesystem($yourNewPath));
return $twig;
}));