Page 1 of 1

rendercell doesnt display as expected in list view

PostPosted: Mon Oct 19, 2009 2:21 pm
by tomhousley
Hello,

I have two tables:

tbl_history
tbl_organisation

In list view for tbl_history, the organisation name is shown (which is generated because of the vocabulary in field.ini pulling that from valuelists.ini, and when clicked takes me to the correct record in the tbl_history.

When the organisation name is clicked in list view of tbl_history I want this to load the edit view of the organisation. I have achieved this by rendercell:

Code: Select all
function org_id__renderCell(&$record){
return '<a href="index.php?-action=browse&-table=tbl_organisation&org_id='.$record->strval('org_id').'">'.$record->val('org_id').'</a>';
}


This works, but the problem is the the organisation name is no longer shown, just the org_id.

If I change the code to:

Code: Select all
function org_id__renderCell(&$record){
return '<a href="index.php?-action=browse&-table=tbl_organisation&org_id='.$record->strval('org_id').'">'.$record->val('org_name').'</a>';
}


... then nothing is rendered in the cell.

How to I show the organisation name as defined in valuelists.ini ?

Any help would be gratefully received.

Many thanks, Tom

PostPosted: Mon Oct 19, 2009 4:14 pm
by shannah
If you are using a vocabulary on the org_id field then you can just do:
$record->display('org_id') instead of $record->val('org_id').

the display method uses vocabulary values when available. val() and strval() do not.

It is sort of like a food chain:

val() : Returns the raw value (may be int, array, or string, etc..)
strval(): Returns the raw value converted to a string (basically how it is saved in the db).
display() : Returns a display-ready version of the data. This includes converting ids into their corresponding values as specified in a vocabulary.
htmlValue() : Like display but renders for HTML display. e.g. encodes special chars, uses <br> instead of \n etc..


-Steve

PostPosted: Tue Oct 20, 2009 12:43 am
by tomhousley
Thank you Steve, works a treat.