Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Form Questions

TableListField custom CSV not working?


Reply

2 Posts   1366 Views

Avatar
Sparrowhawk

15 December 2009 at 12:37am (Last edited: 15 December 2009 12:37am), Community Member, 33 Posts

Hi,

I have amended the CMS form for one of my pages to include a TableListField.

This works fine, it shows the 4 columns I have asked it to show for the records in table ProgrammeLaunch.

However, it is ignoring my custom query that is set for the CSV export (ie on the form I show just 4 fields, but in the CSV export I want to see more fields, but only the 4 fields listed for the form view are being exported. Here is the code:

class ProgrammeLaunchPage extends Page
{
static $db = array();

function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Content.Responses',$this->getProgrammeLaunchAnswersAsTLF());

return $fields;
}

/**
* Returns the questionnaire answers as a TableListField
*
* @return TableListField
*/
protected function getProgrammeLaunchAnswersAsTLF() {

// Fields to display at the top level
$fieldList = array(
'AttendeeName' => 'Name',
'AttendeeJobTitle' => 'Job Title',
'AttendeeCompany' => 'Company',
'LastEdited' => 'Submitted',
);

$tf = new TableListField('Responses', 'ProgrammeLaunch', $fieldList);

$tf->setFieldCasting(array('LastEdited' => 'Date->Nice'));

// what is user allowed to do?
$tf->setPermissions(array('show', 'export', 'delete', 'print')); // export permission allows CSV exporting

//Page navigation
$tf->setShowPagination(true);
$tf->setPageSize(12);

// CSV output def
$customCsvQuery = new SQLQuery('*', 'ProgrammeLaunch', null, 'AttendeeName');
//die($customCsvQuery);

$tf->setCustomCsvQuery($customCsvQuery);

return $tf;
}

}

If I uncomment the die statement, the SQL produced is valid: SELECT * FROM ProgrammeLaunch ORDER BY AttendeeName

What am I missing?

Many thanks for any help

Avatar
Sparrowhawk

15 December 2009 at 12:49am (Last edited: 15 December 2009 1:40am), Community Member, 33 Posts

I've found a solution, although it does not provide an explanation for the above, so if anyone can explain why the above does not work, I'd be very grateful.

Solution is to use $tf->setFieldListCsv($csvFieldList); instead, where $csvFieldList is an array of field names => field descriptions