Silex控制器提供程序的备用树枝路径

时间:2012-11-19 08:09:59

标签: path twig silex

我正在创建一个新的控制器提供程序,我将在几个项目中使用,我需要在此控制器提供程序的目录中包含几个twig模板,以便在该提供程序的某些路由中使用。我想避免将所有模板文件复制到项目目录中,以用于将要使用此控制器提供程序的每个项目(将其放在twig.path指定的目录下),所以我的问题是:

如何呈现不在twig.path目录下的模板?我可以告诉twig服务提供商呈现特定路径,例如控制器提供程序文件中的__DIR__.'/views/some.template.twig'吗?

2 个答案:

答案 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;
}));