/** * Export all custom form's answer in a Xlsx file (.rzt). * * @param Symfony\Component\HttpFoundation\Request $request * * @return Symfony\Component\HttpFoundation\Response */ public function exportAction(Request $request, $customFormId) { $customForm = $this->getService("em")->find("RZ\\Roadiz\\Core\\Entities\\CustomForm", $customFormId); $answers = $customForm->getCustomFormAnswers(); foreach ($answers as $key => $answer) { $array = [$answer->getIp(), $answer->getSubmittedAt()]; foreach ($answer->getAnswers() as $obj) { $array[] = $obj->getValue(); } $answers[$key] = $array; } $keys = ["ip", "submittedDate"]; $fields = $customForm->getFieldsLabels(); $keys = array_merge($keys, $fields); $xlsx = XlsxExporter::exportXlsx($answers, $keys); $response = new Response($xlsx, Response::HTTP_OK, []); $response->headers->set('Content-Disposition', $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $customForm->getName() . '.xlsx')); $response->prepare($request); return $response; }
protected function getXlsxResults(NodeType $nodetype, array $entities = []) { $fields = $nodetype->getFields(); $keys = []; $answers = []; $keys[] = "title"; foreach ($fields as $field) { if (!$field->isVirtual()) { $keys[] = $field->getName(); } } foreach ($entities as $idx => $nodesSource) { $array = []; foreach ($keys as $key) { $getter = 'get' . str_replace('_', '', ucwords($key)); $tmp = $nodesSource->{$getter}(); if (is_array($tmp)) { $tmp = implode(',', $tmp); } $array[] = $tmp; } $answers[$idx] = $array; } return XlsxExporter::exportXlsx($answers, $keys); }