有没有办法在控制器(php文件)中更改一个细枝模板块

有没有办法在控制器(php文件)中更改一个细枝模板块,php,twig,Php,Twig,假设我有以下细枝模板: {% block header %}My header{% endblock %} {% block middle %}My middle{% endblock %} {% block footer %}My footer{% endblock %} 在我的控制器中,我渲染细枝文件(使用laravel细枝桥,但在其他框架中类似): 公共功能索引(){ $view=view('template.twig'); 返回$view->render(); } 那么,是否有一种方

假设我有以下细枝模板:

{% block header %}My header{% endblock %}
{% block middle %}My middle{% endblock %}
{% block footer %}My footer{% endblock %}
在我的控制器中,我渲染细枝文件(使用laravel细枝桥,但在其他框架中类似):

公共功能索引(){
$view=view('template.twig');
返回$view->render();
}
那么,是否有一种方法可以操纵
$视图
,例如在控制器内将块
中间部分
设置为
我的新中间部分
,而无需触摸
模板.twig
文件

我知道,我可以在我做的地方创建一个新的
child.twig

{% extends "template" %}

{% block middle %}My new middle{% endblock}
但是,有没有一种方法可以做到这一点,而不需要从控制器直接生成额外的细枝文件?差不多

$view->setBlock('middle','My new middle');

也许-?这是一种解决方法,但并不完全是我想要的,因为我需要将这些变量添加到所有细枝文件中。基本上,我必须在每个块上写这样的东西,
{%block-middle%}{%if-block-middle被定义为%}{{block-middle}}{%else%}我的middle{%endif%}{%endblock}
。如果这是个好主意,那就意味着你不能再从缓存的小枝模板中获益了well@bernhardh这是一种复杂的方式,使用过滤器:
{{block_middle | default('My middle')}