I need to display a field value available to paragraph.html.twig in field.html.twig. I have a paragraph type called buttoncontainer with a field name called field_background_color. I have a paragraph type called button nested within that as per the attached screenshot. I need to make the field_background_color value available to field.html.twig.
Let's say field_background_color equates to #333333
In field.html.twig I want to do something like:
<div style="background: {{ color }};"> {% for item in items %} {{ item.content }} {% endfor %} </div> Is this something that can be done with a preprocess function?
I tried
function mysubtheme_preprocess_paragraph(&$variables) { $paragraph = $variables['paragraph']; if ($paragraph->getType() === 'sidebar_button_repeater') { if (!$paragraph->field_background_color->isEmpty()) { $variables['color'] = $paragraph->get('field_background_color')->first()->getValue(); } } } ...but it won't output the value in field.html.twig. The goal is simply to allow the user to determine the div background color behind the buttons they create.
Update: I also added:
{% set paragraph_parent = paragraph.getParentEntity() %} {% set color = paragraph_parent.field_background_color.0.value %} Color is {{ color }}. ...but that doesn't work in field.html.twig either. It does however work in paragraph.html.twig templates.
I found a very useful link at Access A Referenced Node's Fields - Field Level Templating that may inform a change to the code. Maybe syntax using item? I can return the NESTED paragraph field values using {{ item.content['#node'].field_background_color.value }} but I can't return the PARENT paragraph field value.
My specific version of field.html.twig file is field--paragraph--sidebar-button-repeater.html.twig and {{ item.content }} does natively output the parent field field_background_color value (see img). The problem is how to capture that specific value so I can use it in a situation like: <div style="background: [output from field_background_color ];"> in field--paragraph--sidebar-button-repeater.html.twig. I was hoping some iteration of {{ item.content['#node'].field_background_color.value }} would achieve it. Can some parent parameter be added to capture the field value?
Here's my field--paragraph--sidebar-button-repeater.html.twig code. With the preprocessor function above in mind am I missing anything in set to output {{ color }}
Color is {{ color }} {% for item in items %} {{ item.content }} {% endfor %} This works for me but may not be the cleanest way:
{% set bgcolor = "" %} {% for item in element['#items'] %} {% set bgcolor = item.entity.field_background_color.value %} {% endfor %} {% if bgcolor == "#d25d12" %} <div style="background:#d25d12;"> {% for item in items %} {{ item.content }} {% endfor %} <div> {% endif %} 
