gpt4 book ai didi

php - Symfony 和 Twig 模板。如何动态扩展模板或什么也不扩展?

转载 作者:行者123 更新时间:2023-12-01 22:29:38 24 4
gpt4 key购买 nike

让我描述一个情况。您有一个个人资料表单和一个用户可以上传个人资料相关文档的表单。由于个人资料表格已经很长,因此文档已移至新表格。

一切正常。现在我们要使用 Bootstrap 选项卡来执行 Profile |用户友好的文档。

现在我知道了,因为如果您提交文件,我们将使用两个单独的表单,那么配置文件中的更改将不会保存,反之亦然。

我在选项卡中添加了文档表单使用

<div role="tabpanel" class="tab-pane" id="documents">
{{ render(controller('ManyAppBundle:Document:createDocument', {'viewOnly': true})) }}
</div>

'viewOnly': true 是一个查询参数,操作不需要。

我现在的问题是,如果配置文件选项卡呈现文档模板,它必须只显示上传小部件和提交,当您直接转到文档页面时,它必须显示标题和侧边栏以及所有内容。

所以我试过了

{% if not viewOnly %}
{% extends ... %}
{% endif %}

这会产生问题,因为您不能在 if 中使用扩展(导致(“节点“1”对于节点“Twig_Node”不存在”。”)错误)。

其他类似问题提供了这个解决方案

{% extends viewOnly == false ? ... %}

当 viewOnly 为 false 时,它​​必须扩展所有其他模板使用的基本模板,但如果它为 true,我只想显示:

{{ form_start(form, { 'style': 'horizontal', 'col_size': 'sm' }) }}
{% if form.documents is defined %}
{{ form_row(form.documents) }}
{% endif %}

{{ form_row(form.submit, { 'attr': { 'class': 'btn btn-success' } }) }}
{{ form_end(form) }}

但是现在有了顶

{% extends viewOnly == false ? ... %}

如果 viewOnly 变为真,则失败并显示找不到模板“”。

有没有办法说扩展这个特定模板与不扩展任何模板的结果相同?

或者当 viewOnly 为 false 或什么都不做时,有没有一种方法可以说扩展它?

最佳答案

逻辑应该位于 Controller 操作中。

您可以做的是创建 2 个 Twig ,一个父 Twig 扩展并包含另一个具有数据的子 Twig 。

在您的 Controller 中,您可以根据条件渲染扩展的 Twig 或子 Twig 。

在您的情况下, Controller 代码可能是这样的:

if ($request->query->get('view-only') === true) {
return $this->render('MyAppBundle:Default:data.html.twig'); // this twig hasn't extended; only data.
}
else {
return $this->render('MyAppBundle:Default:index.html.twig'); // this twig has data.html.twig included and extended.
}

我希望这能解决您的问题。 :)

关于php - Symfony 和 Twig 模板。如何动态扩展模板或什么也不扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com