Solución:
Un campo de imagen almacena la identificación del archivo en target_id
. Puede acceder a la identificación del archivo con:
{{ node.field_main_image.target_id }}
Hay una segunda propiedad en el campo de la imagen. Es para la entidad referenciada, en este caso el objeto de archivo. Esto no es visible en la salida de depuración, porque se calcula:
{{ node.field_main_image.entity }}
En el objeto de archivo se encuentra el campo uri
{{ node.field_main_image.entity.uri.value }}
que puede utilizar para obtener la URL de la imagen original
{{ file_url(node.field_main_image.entity.uri.value) }}
o la URL de un estilo de imagen
{{ node.field_main_image.entity.uri.value | image_style('thumbnail') }}
El filtro para el estilo de la imagen es parte de este módulo que debes instalar:
https://www.drupal.org/project/twig_tweak
No puede obtener la URL de la imagen directamente en la plantilla twig ya que los campos de imagen solo tienen la identificación del archivo de imagen. Cada imagen en Drupal 8 es una entidad de archivo.
Puedes probar template_preprocess_node()
:
$image_file_id = $variables['node']->field_image[0]->target_id;
$image_file = DrupalfileEntityFile::load($image_file_id);
$uri = $image_file->uri->value;
$variables['url']=file_create_url($uri);