I think I have a problem with keys and values of a list field in the rendering phase (on Drupal 7).
Let's me go in detail.
Model part:
- We defined a CCK "double field" for a "profile2", with multiple values allowed.
- This field is composed by a select and a text-field, but I'm interested only to the "select" part in this moment (its behavior seems to be the same of a simple list field).
- Then we defined values in the list as
K1|V1
,K2|V2
, etc.
Render part:
- We defined a theme template for this field; there we verifies values by comparing the key:
$val = $item['first']
(to take it) andif ($val=="K1") {...}
... and everithing works fine, because tamplate receives keys of the list (insidefirst
key of the#object
array of the renderable array). - In a node page I have to show the same information and I would like to use the same template file (instead of replicate the code). So I tried to use
render( )
Drupal function, and it needs for a renderable array... but the only function I found to get it wasfield_view_field( )
... and it doesn't work as I expect.
The problem is that this function doesn't return field keys (e.g. K1
), but values (e.g. V1
)... so templates is not able to work properly.
I know I can write differently my template (e.g. if ($val=="K1" || $val=="V1")
, but I think this is can't be the right solution, because code should alway depend from keys (and not values, that may change over time).
So I'm wondering what is the Drupal way to achieve a renderable array in which there is the keys and not the values of a list element.
Thank you