Ich habe ein Projekt, wo Menschen Orte auf Veranstaltungen buchen können. Es gibt Dutzende von Veranstaltungen. Ich wurde gebeten, einen Bericht zu erstellen, der die Teilnehmer auflistet, damit sie an der Tür eingecheckt werden können. Da es so viele Ereignisse gibt, möchte ich dem Bearbeitungsformular für jedes Ereignis (innerhalb des CMS) eine Schaltfläche "Teilnehmerbericht" hinzufügen. Ich habe den Button erstellt, und es funktioniert.Generieren von CSV aus CMS EditForm
ABER ... anstatt die Daten in einer CSV zu bekommen, bekomme ich die (korrekten) Daten im CMS angezeigt, als ob es echoed wäre.
Hier ist meine Funktion
public function getCustomersForEvent ($ data, $ form) {
$attendees = CustomerOrderLine::get()->filter(array("EventID" => $data["ID"]));
if(!$attendees){
return false;
}
$fileName = "report.csv";
$separator = ",";
$csvColumns = array("ID", "Description", "Customer");
$fileData = "";
foreach($attendees as $row){
$fileData .= $row->Event()->EventName . $separator;
$fileData .= $row->CustomerOrder()->Customer()->FirstName . " " . $row->CustomerOrder()->Customer()->Surname . "\n";
}
return SS_HTTPRequest::send_file($fileData, $fileName, 'text/csv');
}
Ich habe in diesem http://www.silverstripe.org/community/forums/general-questions/show/15325 einen Blick hatte, aber die Daten hallte ohnehin in das CMS.
Kann mir bitte jemand sagen, was ich falsch mache? Wie gesagt, die Daten sind in Ordnung, aber ich bekomme den CSV-Öffnen- oder Speichern-Dialog nicht.
Vielleicht müssen Sie einen Inhalt Disposition Header vor dem Senden der Ausgabe –
setzen. . Nein, es wird immer noch als Text auf dem CMS ausgegeben. – user3769009