Resolviendo el cambio de alias con views_customfield

Views Custom Field es un módulo que permite colocar PHP como contenido de un campo de una vista.

Normalmente, uno usa la variable $data para acceder a los valores de los campos que se hayan definido.

Por ejemplo, $data->nid permite obtener el valor de nodo y haciendo print_r($data) uno puede explorar otros valores que usar.

Pero hay un problema con los valores de los campos CCK. El nombre de los campos que contienen sus valores en $data corresponden a aliases que no son constantes. Por ejemplo, cuando usa filtros expuestos, podrá encontrar que ese nombre de campo en $data cambia según qué filtro esté aplicando.

Una forma de solucionar esto es usar $this->view, también disponible, para obtener el alias adecuado en cada caso. Es decir, en lugar de usar $data->some_field_alias usar $data->{$this->view->field['field_id']->field_alias}

Este es un ejemplo real:

<?php
$cliente_nid = $data->{$this->view->field['field_client_nid']->field_alias};
$pieza = $data->{$this->view->field['field_job_pieza_value']->field_alias};
$descuento = $data->{$this->view->field['field_job_descuento_value']->field_alias};
$factor = $data->{$this->view->field['field_job_factor_value']->field_alias};
$cantidad = $data->{$this->view->field['field_job_cantidad_value']->field_alias};
return mymodule_get_tarifa_final($cliente_nid, $pieza, $descuento, $factor, $cantidad);
?>

Referencias

Comentarios

Entradas populares de este blog

Debug con Xdebug y Aptana (y Notepad++)

Drupal sí, drupal no

CSS3 para mejorar el breadcrumb de un tema Zen