我使用带有树枝的沉默;
我创建自定义 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 中它会起作用,但这不是解决方案
答案 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'
),
));