【发布时间】:2014-12-18 09:56:29
【问题描述】:
已解决
所以我找到了另一个线程on stackoverflow here,其中一个答案有效。出于某种原因,使用以下代码确实有效!
<pre>{{ dump(form.parent.parent.parent.vars[form.parent.type.vars.value ~ '_choices']|default('')) }}</pre>
原帖
我希望你能帮助我解决一个令人头疼的问题。我们将不胜感激您能提供的任何指导。
我可以执行以下代码:
<pre>{{ dump(form.parent.parent.parent.vars) }}</pre>
当我运行该代码时,我得到了数组的细分。下面是一个简短的版本。
array (size=28)
'page_choices' =>
array (size=2)
1 => string 'Test Page 1' (length=11)
2 => string 'Test Page 2' (length=11)
'file_choices' =>
array (size=0)
empty
现在,我还执行以下操作并按预期获得“page_choices”。
<pre>{{ dump(form.parent.type.vars.value ~ '_choices') }}</pre>
当我把它们放在一起时,问题就来了:
<pre>{{ dump(form.parent.parent.parent.vars[form.parent.type.vars.value ~ '_choices']) }}</pre>
当我尝试将代码放在一起以便从“page_choices”数组键中获取数据时,我收到以下错误:
键为“_choices”的数组,键为“value, attr, form, id, name, 全名、禁用、标签、多部分、块前缀、 unique_block_prefix、translation_domain、cache_key、只读、错误、 有效,数据,必需,最大长度,模式,大小,标签属性, 复合、方法、动作、提交、page_choices、file_choices” 不存在
它甚至将“page_choices”列为键。我不确定为什么这两个部分都按预期转储,但是当我将它们组合起来时,就好像它只获得了密钥的“_choices”。我不明白为什么他们分开工作而不一起工作。
编辑
以下两个块也返回为“true”,这让我更加困惑。
<pre>{{ form.parent.type.vars.value ~ '_choices' in form.parent.parent.parent.vars|keys ? "True" : "False" }}</pre>
<pre>{{ form.parent.parent.parent.vars[form.parent.type.vars.value ~ '_choices'] is defined ? "True" : "False" }}</pre>
【问题讨论】:
-
{{ dump(attribute(form.parent.parent.parent.vars, form.parent.type.vars.value ~ '_choices')) }}怎么样?你也试过{{ dump(form.parent.parent.parent.vars['page_choices']) }}吗? (我希望那个可以工作,但要确保。)最后,{% set temp = form.parent.type.vars.value ~ '_choices' %}然后{{ dump(form.parent.parent.parent.vars[temp]) }}呢? -
我会尝试 sjagr 的回复。我的建议是,每当您尝试做像 form.parent.parent.parent.vars[form.parent.type.vars.value ~ '_choices'] 这样大的事情时,这可能不是要走的路,应该是实现您想要的更简单的方法,我会尽我所能保持 Twig 前端尽可能干净,而不是过于复杂的事情。
-
@sjagr 当我根据您的建议手动键入“page_choices”作为键时,我确实得到了我正在寻找的数据。当我尝试用逗号分隔变量的第一条评论时,它会导致相同的错误。为了将值存储为变量,我也尝试了 twig set 方式,但同样的错误仍然存在。
-
@MartinRios 我这样做是因为我正在创建一个在菜单上创建项目的工具,它可以是外部链接、内部文件链接或内部自定义页面的链接。根据他们更改的“类型”下拉框,我正在尝试根据需要将“链接”框更改为选择框或文本框。我不确定是否有更好的方法,但这似乎应该适用于我正在尝试做的事情!