/**
  * @param RZ\Roadiz\Core\Entities\CustomForm $customForm
  *
  * @return \Symfony\Component\Form\Form
  */
 private function buildDeleteForm(CustomFormAnswer $customFormAnswer)
 {
     $builder = $this->createFormBuilder()->add('customFormAnswerId', 'hidden', ['data' => $customFormAnswer->getId(), 'constraints' => [new NotBlank()]]);
     return $builder->getForm();
 }
Пример #2
0
 /**
  * Add a custom form answer into database.
  *
  * @param array $data Data array from POST form
  * @param RZ\Roadiz\Core\Entities\CustomForm $customForm
  * @param Doctrine\ORM\EntityManager $em
  *
  * @return array $fieldsData
  */
 public static function addCustomFormAnswer(array $data, CustomForm $customForm, EntityManager $em)
 {
     $now = new \DateTime('NOW');
     $answer = new CustomFormAnswer();
     $answer->setIp($data["ip"]);
     $answer->setSubmittedAt($now);
     $answer->setCustomForm($customForm);
     $fieldsData = [["name" => "ip.address", "value" => $data["ip"]], ["name" => "submittedAt", "value" => $now]];
     $em->persist($answer);
     foreach ($customForm->getFields() as $field) {
         $fieldAttr = new CustomFormFieldAttribute();
         $fieldAttr->setCustomFormAnswer($answer);
         $fieldAttr->setCustomFormField($field);
         if ($data[$field->getName()] instanceof \DateTime) {
             $strDate = $data[$field->getName()]->format('Y-m-d H:i:s');
             $fieldAttr->setValue($strDate);
             $fieldsData[] = ["name" => $field->getLabel(), "value" => $strDate];
         } else {
             if (is_array($data[$field->getName()])) {
                 $values = $data[$field->getName()];
                 $values = array_map('trim', $values);
                 $values = array_map('strip_tags', $values);
                 $displayValues = implode(', ', $values);
                 $fieldAttr->setValue($displayValues);
                 $fieldsData[] = ["name" => $field->getLabel(), "value" => $displayValues];
             } else {
                 $fieldAttr->setValue(strip_tags($data[$field->getName()]));
                 $fieldsData[] = ["name" => $field->getLabel(), "value" => $data[$field->getName()]];
             }
         }
         $em->persist($fieldAttr);
     }
     $em->flush();
     return $fieldsData;
 }