在 Silex 中覆盖 Twig 表单主题

Override Twig form theme in Silex

如何在 Silex 中覆盖部分 Twig 表单主题?我知道在 Symfony 中,我所要做的就是扩展原始文件,然后创建我的覆盖块,但这在 Silex 中似乎不起作用。我想自定义 bootstrap_3_horizontal_layout.html.twig 表单主题的某些部分。我可以在不将主题文件复制到我的视图目录的情况下执行此操作吗?

这是我的树枝模板:

{% extends 'bootstrap_3_horizontal_layout.html.twig' %}

{% block form_label_class -%}
    col-sm-4
{%- endblock form_label_class %}

{% block form_group_class -%}
    col-sm-6
{%- endblock form_group_class %}

{% block button_widget -%}
    {% set attr = attr|merge({class: (attr.class|default('') ~ ' btn btn-primary')|trim}) %}
    {{- parent() -}}
{%- endblock %}

如果我将它放在我的 views 目录中,Twig 似乎陷入无限循环,该文件扩展自身而不是 twig-bridge 组件中的对应文件。

我找到了解决问题的方法:

$app['twig.loader.filesystem']->prependPath(__DIR__.'/../src/View/Form');

这告诉 twig 查看我的 scr/view/form 目录,我从上面的模板那里。在使用 twig 桥中的模板之前,它将检查此目录。