我试图覆盖文件(index.html.twig)中的{%block%},该文件扩展了使用该块的文件(base.html.twig)。但是扩展文件包含另一个twig文件(feature.twig),其中放置了覆盖index.html.twig中内容的块。 这有可能吗?也许还有其他东西而不是include语句?
if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,Manifest.permission.READ_PHONE_STATE)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
答案 0 :(得分:3)
include
- 函数(或代码)只能嵌入 呈现的结果。无法操纵包含文件中的块。
但在你的情况下,这不是必要的。由于index.html.twig
扩展了base.html.twig
,您可以像这样覆盖块extraJs
:
{# index.html.twig #}
{% extends 'base.html.twig' %}
{% block extraJs %}
{{ include('feature.html.twig') }}
{% endblock }
如果需要,您可以使用parent
- 函数扩展原始块。 E.g:
{# index.html.twig #}
{% extends 'base.html.twig' %}
{% block extraJs %}
{{ parent() }} {# `extraJs`-block content from `base.html.twig` #}
{{ include('feature.html.twig') }}
{% endblock }
答案 1 :(得分:0)
不,不可能。 include
只是渲染模板并包含输出。您无法使用它来覆盖阻止。以下是与此问题相关的问题https://github.com/twigphp/Twig/issues/1360
答案 2 :(得分:0)
仅作为一种信息,我认为您不能在{%扩展'base.html.twig'%}之前添加注释{#index.html.twig#},并且我认为必须始终将注释放置成块,希望这有帮助