Пример #1
0
 /**
  * @param FieldConfigModel $configModel
  * @return array
  */
 protected function writeItem(FieldConfigModel $configModel)
 {
     $className = $configModel->getEntity()->getClassName();
     $fieldName = $configModel->getFieldName();
     $state = ExtendScope::STATE_UPDATE;
     if (!$this->configManager->hasConfig($className, $fieldName)) {
         $this->configManager->createConfigFieldModel($className, $fieldName, $configModel->getType());
         $state = ExtendScope::STATE_NEW;
     }
     $translations = [];
     foreach ($this->configManager->getProviders() as $provider) {
         $scope = $provider->getScope();
         $data = $configModel->toArray($scope);
         if (!$data) {
             continue;
         }
         $translations = array_merge($translations, $this->processData($provider, $provider->getConfig($className, $fieldName), $data, $state));
     }
     $this->setExtendData($className, $fieldName, $state);
     $this->updateEntityState($className);
     if ($state === ExtendScope::STATE_UPDATE && in_array($configModel->getType(), ['enum', 'multiEnum'], true)) {
         $this->setEnumData($configModel->toArray('enum'), $className, $fieldName);
     }
     return $translations;
 }
Пример #2
0
 public function testFieldConfigModel()
 {
     $fieldName = 'testField';
     $fieldType = 'integer';
     $entityModel = new EntityConfigModel('Test\\TestClass');
     $fieldModel = new FieldConfigModel($fieldName, $fieldType);
     $fieldModel->setEntity($entityModel);
     $this->assertEmpty($fieldModel->getId());
     $this->assertEquals($fieldName, $fieldModel->getFieldName());
     $this->assertEquals($fieldType, $fieldModel->getType());
     $this->assertSame($entityModel, $fieldModel->getEntity());
     $fieldName1 = 'testField';
     $fieldType1 = 'integer';
     $fieldModel->setFieldName($fieldName1);
     $fieldModel->setType($fieldType1);
     $this->assertEquals($fieldName1, $fieldModel->getFieldName());
     $this->assertEquals($fieldType1, $fieldModel->getType());
 }
Пример #3
0
 public function test()
 {
     $this->assertEquals('test', $this->configField->getFieldName($this->configField->setFieldName('test')));
     $this->assertEquals('string', $this->configField->getType($this->configField->setType('string')));
     $this->assertEquals('Acme\\Bundle\\DemoBundle\\Entity\\TestAccount', $this->configEntity->getClassName($this->configEntity->setClassName('Acme\\Bundle\\DemoBundle\\Entity\\TestAccount')));
     /** test ConfigField set/getEntity */
     $this->configField->setEntity($this->configEntity);
     $this->assertEquals($this->configEntity, $this->configField->getEntity());
     /** test ConfigField getOptions */
     $this->assertInstanceOf('\\Doctrine\\Common\\Collections\\ArrayCollection', $this->configField->getOptions());
     /** test ConfigEntity addField */
     $this->configEntity->addField($this->configField);
     $this->assertEquals($this->configField, $this->configEntity->getField('test'));
     /** test ConfigEntity setFields */
     $this->configEntity->setFields(array($this->configField));
     $this->assertEquals(array($this->configField), $this->configEntity->getFields());
     /** test ConfigValue */
     $this->configValue->setCode('is_extend')->setScope('extend')->setValue(true)->setField($this->configField);
     $this->assertEquals(array('code' => 'is_extend', 'scope' => 'extend', 'value' => true, 'serializable' => false), $this->configValue->toArray());
     /** test Config setValues() */
     $this->configEntity->setValues(array($this->configValue));
     $this->assertEquals($this->configValue, $this->configEntity->getValue('is_extend', 'extend'));
 }
Пример #4
0
 public function testFieldConfigModel()
 {
     $fieldName = 'testField';
     $fieldType = 'integer';
     $entityModel = new EntityConfigModel('Test\\TestClass');
     $fieldModel = new FieldConfigModel($fieldName, $fieldType);
     $fieldModel->setEntity($entityModel);
     $this->assertEmpty($fieldModel->getId());
     $this->assertEquals($fieldName, $fieldModel->getFieldName());
     $this->assertEquals($fieldType, $fieldModel->getType());
     $this->assertSame($entityModel, $fieldModel->getEntity());
     $fieldName1 = 'testField';
     $fieldType1 = 'integer';
     $fieldModel->setFieldName($fieldName1);
     $fieldModel->setType($fieldType1);
     $this->assertEquals($fieldName1, $fieldModel->getFieldName());
     $this->assertEquals($fieldType1, $fieldModel->getType());
     $this->assertCount(0, $fieldModel->getOptions());
     $optionSet = new OptionSet();
     $fieldModel->setOptions(new ArrayCollection([$optionSet]));
     $this->assertCount(1, $fieldModel->getOptions());
     $this->assertSame($optionSet, $fieldModel->getOptions()->first());
 }
 /**
  * @return string
  */
 public function getFieldType()
 {
     return $this->configModel->getType();
 }
 /**
  * @param FieldConfigModel $entity
  * @return array
  */
 protected function validateEntityFields(FieldConfigModel $entity)
 {
     $errors = [];
     $fieldProperties = $this->fieldTypeProvider->getFieldProperties($entity->getType());
     foreach ($fieldProperties as $scope => $properties) {
         $scopeData = $entity->toArray($scope);
         foreach ($properties as $code => $config) {
             if (!isset($scopeData[$code])) {
                 continue;
             }
             if ($scope === 'enum') {
                 foreach ($scopeData[$code] as $key => $enumFields) {
                     $result = $this->strategyHelper->validateEntity(EnumValue::createFromArray($enumFields));
                     if ($result) {
                         $errors[] = sprintf('%s.%s.%s: %s', $scope, $code, $key, implode(' ', $result));
                     }
                 }
             } elseif (isset($config['constraints'])) {
                 $result = $this->strategyHelper->validateEntity($scopeData[$code], $this->constraintFactory->parse($config['constraints']));
                 if ($result) {
                     $errors[] = sprintf('%s.%s: %s', $scope, $code, implode(' ', $result));
                 }
             }
         }
     }
     return $errors;
 }
Пример #7
0
 /**
  * @param FieldConfigModel $model
  * @param array $options
  */
 protected function updateModelConfig(FieldConfigModel $model, array $options)
 {
     $fieldProperties = $this->fieldTypeProvider->getFieldProperties($model->getType());
     foreach ($fieldProperties as $scope => $properties) {
         $values = [];
         foreach ($properties as $code => $config) {
             if (!isset($options[$scope][$code])) {
                 continue;
             }
             $value = $this->denormalizeFieldValue(isset($config['options']) ? $config['options'] : [], $options[$scope][$code], $model->getType());
             if ($value !== null) {
                 $values[$code] = $value;
             }
         }
         $model->fromArray($scope, $values, []);
     }
 }
Пример #8
0
 /**
  * Gets config id for the given model
  *
  * @param EntityConfigModel|FieldConfigModel $model
  * @param string                             $scope
  * @return ConfigIdInterface
  */
 public function getConfigIdByModel($model, $scope)
 {
     if ($model instanceof FieldConfigModel) {
         return new FieldConfigId($scope, $model->getEntity()->getClassName(), $model->getFieldName(), $model->getType());
     } else {
         return new EntityConfigId($scope, $model->getClassName());
     }
 }