Silex Twig Library的视图/资源位置

时间:2012-08-15 10:50:01

标签: php twig silex composer-php

通常,对于Silex项目,我会有顶级目录,如:

- app/
   - views/
- src/
- vendor/
- web/

现在,我的一些课程可能会调用$app['twig']->render(...),它会从app/views文件夹中提取视图。

如果我在多个项目中提取一个更可重用的库,我应该在哪里保留其视图文件,以及如何指示Twig查看?

同样的问题适用于我通常会放在web/中的图形/样式表等。

当然,他们必须在某个地方vendor/my-lib内才能让Composer干净地安装文件?是否有共同/最佳实践方法?

更新 作为参考,这是我最终做的事情:

<?php

// in my \Silex\ServiceProviderInterface ...

/**
 * @var \Twig_Environment $twig
 */
$twig = $app['twig'];

// Add the paths to our twig templates here
$fsLoader = new \Twig_Loader_Filesystem(array(
    __DIR__.'/views/'
));

$twig->setLoader(new \Twig_Loader_Chain(array($twig->getLoader(), $fsLoader)));

感谢。

1 个答案:

答案 0 :(得分:4)

我将视图存储在src / {Library} / {Class} / View /

我将Twig的基本路径设置为src

$app->register(new TwigServiceProvider(), array(
    'twig.path' => array(
        __DIR__ . '/../src/{Library}/'
    ),
    'twig.options' => array('cache' => false, 'strict_variables' => true)
));

当调用渲染时我从该点传递路径

$app['twig']->render('{Class}/View/{twigfile}.html.twig',$data);