如何在树枝中设置默认主题?

时间:2013-12-09 10:04:47

标签: twig silex

我使用带有树枝的沉默;

我创建自定义 form_div_layout 并将其放入webroot(例如)

我像这样注册TwigService提供程序

    $app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__ . '/../views',
    'twig.options' => array(
        'cache' => __DIR__ . '/../cache/twig',
        'strict_variables' => false
    ),
    'twig.form.templates'=> [WEBROOT . '/form_div_layout.twig']
));

但我有一个错误 Twig_Error_Loader: Template "/home/versh/sale/web/form_div_layout.twig" is not defined () in "layout.twig" at line 52.

如何正确注册主题? 我知道如果我把主题放在 twig.path 中它会起作用,但这不是解决方案

2 个答案:

答案 0 :(得分:6)

我正在使用带名称空间的Twig,我认为这是最灵活的做法:

$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.options' => array(
    'cache' => true,
    'strict_variables' => true,
    'debug' => false,
    'autoescape' => true
   )
));

// set namespace for your application
$app['twig.loader.filesystem']->addPath(WHERE_EVER_YOU_WANT_PATH, 'yourApplication');

现在您可以使用命名空间渲染模板:

return $app['twig']->render('@yourApplication/sample.twig', array());

您可以根据需要定义任意数量的命名空间。

答案 1 :(得分:4)

您还必须将基本模板form_div_layout.html.twig添加到twig.form.templates选项。

$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/../views',
    'twig.options'=>array(
        'cache'     => __DIR__.'/../cache',
    ),
    'twig.form.templates' => array(
        'form_div_layout.html.twig', 
        'theme/form_div_layout.twig'
    ),
));