コード例 #1
0
 /**
  * Try to find (recursively) if there is a new field to add to the content type
  * 
  * @param array $formArray        	
  * @param FieldType $fieldType        	
  */
 private function addNewField(array $formArray, FieldType $fieldType)
 {
     if (array_key_exists('add', $formArray)) {
         if (isset($formArray['ems:internal:add:field:name']) && strcmp($formArray['ems:internal:add:field:name'], '') != 0 && isset($formArray['ems:internal:add:field:class']) && strcmp($formArray['ems:internal:add:field:class'], '') != 0) {
             if ($this->isValidName($formArray['ems:internal:add:field:name'])) {
                 $fieldTypeNameOrServiceName = $formArray['ems:internal:add:field:class'];
                 $fieldName = $formArray['ems:internal:add:field:name'];
                 /** @var DataFieldType $dataFieldType */
                 $dataFieldType = $this->getDataFielType($fieldTypeNameOrServiceName);
                 $child = new FieldType();
                 $child->setName($fieldName);
                 $child->setType($fieldTypeNameOrServiceName);
                 $child->setParent($fieldType);
                 $child->setOptions($dataFieldType->getDefaultOptions($fieldName));
                 $fieldType->addChild($child);
                 $this->addFlash('notice', 'The field ' . $child->getName() . ' has been prepared to be added');
                 return '_ems_' . $child->getName() . '_modal_options';
             } else {
                 $this->addFlash('error', 'The field\'s name is not valid (format: [a-z][a-z0-9_-]*)');
             }
         } else {
             $this->addFlash('error', 'The field\'s name and type are mandatory');
         }
         return true;
     } else {
         /** @var FieldType $child */
         foreach ($fieldType->getChildren() as $child) {
             if (!$child->getDeleted()) {
                 $out = $this->addNewField($formArray['ems_' . $child->getName()], $child);
                 if ($out !== false) {
                     return '_ems_' . $child->getName() . $out;
                 }
             }
         }
     }
     return false;
 }