【问题标题】:Returning deeply nested field variable value in Drupal 8在 Drupal 8 中返回深度嵌套的字段变量值
【发布时间】:2019-03-04 04:40:50
【问题描述】:

在过去的几个小时里,我一直在尝试解决这个问题,但还没有接近解决方案。我正在尝试返回 D8 段落模板内的链接目标属性的字符串值:

当我使用机器名 (field_link_cta) 对字段进行 var 转储时,请执行以下操作

{{ dump(content.field_link_cta['#items'].getValue()) }}我得到了结果返回值:

我可以遍历变量返回标题ok,但由于某种原因无法获取链接属性?

{{ content.field_link_cta[0]['#title'] }} - 有效,返回值。

{{ content.field_link_cta[0]['#options']['#attributes']['#target'] }} - 不起作用,不返回值。

我在这里缺少什么?鉴于我已经遍历了变量转储中列出的变量,不应该像标题一样返回“目标”属性字符串吗?有没有更好的方法在这里检查这个变量的上下文?

任何指针将不胜感激。

感谢您的帮助!

标记。

【问题讨论】:

    标签: php drupal twig drupal-8


    【解决方案1】:

    有两种选择:

    选项 1(更好):

    {{ content.field_link_cta.0['#options']['attributes']['target'] }}
    

    选项 2:

    {{ content.field_link_cta['#items'].getValue().0['options']['attributes']['target']) }}
    

    解释:

    你做了{{ dump(content.field_link_cta['#items'].getValue()) }},你可以看到选项属性和目标数组键没有#。但是,除了转储之外,您从未使用过此选项(选项 2)。

    最好使用{{ dump(content.field_link_cta[0]) }},您会看到不同的转储,例如:

    array (size=4)
      '#type' => string 'link' (length=4)
      '#title' => string 'link/text' (length=9)
      '#options' => 
        array (size=1)
          'attributes' => 
            array (size=3)
              'target' => string '_blank' (length=6)
              'rel' => string 'rel' (length=3)
              'class' => 
                array (size=1)
                  ...
    

    这里很明显标题数组键有#,这就是{{ content.field_link_cta[0]['#title'] }} 起作用的原因。

    属性和目标数组键没有#,这就是{{ content.field_link_cta[0]['#options']['#attributes']['#target'] }} 不起作用的原因,正确的代码将显示在“选项1”下。

    【讨论】:

    • 效果很好,谢谢!我仍然无法使用{{ dump(content.field_link_cta[0]) }} 正确转储数组的内容,但渲染效果很好。它的逻辑是有道理的。
    • 转储的输出是什么?你可以试试{{ dump(content.field_link_cta.0) }} 吗?
    猜你喜欢
    • 2017-04-23
    • 2018-11-30
    • 2011-11-22
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多