コード例 #1
0
ファイル: FormModel.php プロジェクト: dongilbert/mautic
 /**
  * @param Form $entity
  * @param      $sessionFields
  */
 public function setFields(Form $entity, $sessionFields)
 {
     $order = 1;
     $existingFields = $entity->getFields()->toArray();
     $formName = $entity->generateFormName();
     foreach ($sessionFields as $key => $properties) {
         $isNew = !empty($properties['id']) && isset($existingFields[$properties['id']]) ? false : true;
         $field = !$isNew ? $existingFields[$properties['id']] : new Field();
         if (!$isNew) {
             if (empty($properties['alias'])) {
                 $properties['alias'] = $field->getAlias();
             }
             if (empty($properties['label'])) {
                 $properties['label'] = $field->getLabel();
             }
         }
         if ($formName === $properties['alias']) {
             // Change the alias to prevent potential ID collisions in the rendered HTML
             $properties['alias'] = 'f_' . $properties['alias'];
         }
         foreach ($properties as $f => $v) {
             if (in_array($f, ['id', 'order'])) {
                 continue;
             }
             $func = 'set' . ucfirst($f);
             if (method_exists($field, $func)) {
                 $field->{$func}($v);
             }
         }
         $field->setForm($entity);
         $field->setSessionId($key);
         $field->setOrder($order);
         ++$order;
         $entity->addField($properties['id'], $field);
     }
     // Persist if the entity is known
     if ($entity->getId()) {
         $this->formFieldModel->saveEntities($existingFields);
     }
 }