【问题标题】:Symfony2 - Twig form vars not working as expectedSymfony2 - Twig 表单变量无法按预期工作
【发布时间】: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 我这样做是因为我正在创建一个在菜单上创建项目的工具,它可以是外部链接、内部文件链接或内部自定义页面的链接。根据他们更改的“类型”下拉框,我正在尝试根据需要将“链接”框更改为选择框或文本框。我不确定是否有更好的方法,但这似乎应该适用于我正在尝试做的事情!

标签: php symfony twig


【解决方案1】:

所以我必须在我的代码之后添加 |default('') 才能让它正常工作。我不知道为什么,但下面的代码最终工作了!

<pre>{{ dump(form.parent.parent.parent.vars[form.parent.type.vars.value ~ '_choices']|default('')) }}</pre>

感谢大家尝试和我一起解决这个问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-19
    • 2019-09-24
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多