使用Drupal 8
我想将字段的内容打印到src
属性中。我的观点有以下模板:
<div class="videoWrapperHD">
<iframe width="560" height="315" src="{{ rows[0].content | raw }}"
frameborder="0" allowfullscreen>
</iframe>
</div>
但iframe充满了我自己的网站&#34; Page Not Found &#34;页面而不是Youtube视频,因为Twig在打印变量rows[0].content
之前和之后打印出大量的调试注释。
是否可以禁用特定字段的调试注释?我不想要禁用/启用调试以确保它按预期工作。
我也尝试使用{{ attributes.setAttribute('src', {{ rows[0].content }} ) }}
,但没有骰子。
另一次失败的尝试是:
{% set iframe_src = rows[0].content %}
<div class="videoWrapperHD">
<iframe width="560" height="315" {{ attributes.setAttribute('src', iframe_src) }}
frameborder="0" allowfullscreen></iframe>
</div>
我的最后一个想法是:
{% set url = rows[0].content | raw %}
{% set iframe_src = 'src=' ~ url %}
<div class="videoWrapperHD">
<iframe {{ iframe_src }} ></iframe>
</div>
但它打印出 src = Array
答案 0 :(得分:1)
试试这个
在你的.theme
中function your_theme_preprocess_field(&$variables, $hook) {
switch ($variables['element']['#field_name']) {
case 'field_iframe_src':
$variables['iframe_src'] = $variables['items'][0]['content']['#context']['value'];
break;
}
}
在你的枝条中
<iframe width="560" height="315" src="{{ iframe_src|raw}}"
frameborder="0" allowfullscreen>
</iframe>
答案 1 :(得分:0)
听起来像是必须在预处理器中完成的事情。如果你从节点对象中获取它,而不是内容数组,它就不应该得到所有调试废话。
你还应该确保你的网址没有做坏事...如果你只想要你的视频,你应该做一些检查,以确保这是你从内容中获得的。
请参阅$ node,找到值,清理/仔细检查它的值,然后将其设置为$ variables [&#39; variable_name&#39;]并且您应该能够在twig中使用它{ {变量名}}
答案 2 :(得分:0)
答案在another question,我在这里粘贴它以防被删除。以下答案的作者是@4k4
field.content
是渲染字段。在视图中,这意味着它不再是渲染数组,而是最终渲染的标记。所以将它用作类名是非常有问题的,不仅仅是因为twig debug。
更好地使用行数据,您可以在其中找到包含数据库中字段数据的实体对象。使用clean_class转义它以将其用作类名:
{{ row._entity.field_myfield.value|clean_class }}