Cómo sumar valores de un field collection en un field computed en Drupal 7

Si tenemos un campo field collection con campos como números decimales, números enteros, etc. es posible que queramos sumar esos valores en otro campo Computed.

Por ejemplo imaginemos que tenemos un campo field collection llamado: field_superf y este tiene campo de texto Nombre y un campo decimal llamado field_constr y tenemos los siguientes datos:

Sotano 50,00 m2

Planta baja 60,00 m2

Los valores del campo field_constr los podemos sumar en otro campo Computed escribiendo lo siguiente en el Computed Code (PHP):

$sum = 0;
$wrapper = entity_metadata_wrapper($entity_type, $entity);
foreach($wrapper->field_superf as $collection) {
$sum += $collection->field_constr->value();
}
$entity_field[0]['value'] = $sum;

Donde hemos puesto field_superf ponemos el nombre del campo field collection y donde hemos puesto field_constr ponemos el nombre del campo del que queremos sumar todos sus elementos.

En el Display Code (PHP) ponemos:

$display_output = $entity_field_item['value'];

Al ver el resultado obtendríamos en este caso: 110,00, que es la suma de 50,00 y 60,00 del ejemplo que hemos visto.

Publicado por

victor

Hola!. Me llamo Víctor y soy Ingeniero Agrónomo de formación y programador web de profesión (desde el año 2006). Por otra parte me gusta, entre otras aficiones, el senderismo, jugar al futbol y al FIFA en la PS4. Te animo a participar en mi web www.biolucas.com

2 comentarios en «Cómo sumar valores de un field collection en un field computed en Drupal 7»

  1. Este snippet de computed field aparece explicado por aquí y por allá en varios sitios, pero esta es la MEJOR explicación. Finalmente alguien se molesta en agregar un ejemplo COMPLETO con el nombre de los campos y los valores.
    Muchísimas gracias Víctor.

    1. Muchas gracias a ti Alejandro. La verdad que me costó un tiempo saber como funcionaba ya que no venía muy claro en ningún sitio.

      Un saludo, Víctor

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

CommentLuv badge