2

通常,对于 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)));

谢谢。

4

1 回答 1

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);
于 2012-08-15T11:09:15.897 回答