/**
  * @Route("/create/{id}", name="oro_entityextend_field_create", requirements={"id"="\d+"}, defaults={"id"=0})
  * Acl(
  *      id="oro_entityextend_field_create",
  *      label="oro.entity_extend.action.config_field_grid.create",
  *      type="action",
  *      group_name=""
  * )
  *
  * @Template
  */
 public function createAction(EntityConfigModel $entity)
 {
     /** @var ConfigProvider $entityConfigProvider */
     $extendConfigProvider = $this->get('oro_entity_config.provider.extend');
     if (!$extendConfigProvider->getConfig($entity->getClassName())->is('is_extend')) {
         $this->get('session')->getFlashBag()->add('error', $entity->getClassName() . 'isn\'t extend');
         return $this->redirect($this->generateUrl('oro_entityconfig_fields', ['id' => $entity->getId()]));
     }
     $newFieldModel = new FieldConfigModel();
     $newFieldModel->setEntity($entity);
     $form = $this->createForm('oro_entity_extend_field_type', $newFieldModel, ['class_name' => $entity->getClassName()]);
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST') {
         $form->submit($request);
         if ($form->isValid()) {
             $fieldName = $newFieldModel->getFieldName();
             $originalFieldNames = $form->getConfig()->getAttribute(FieldType::ORIGINAL_FIELD_NAMES_ATTRIBUTE);
             if (isset($originalFieldNames[$fieldName])) {
                 $fieldName = $originalFieldNames[$fieldName];
             }
             $request->getSession()->set(sprintf(self::SESSION_ID_FIELD_NAME, $entity->getId()), $fieldName);
             $request->getSession()->set(sprintf(self::SESSION_ID_FIELD_TYPE, $entity->getId()), $newFieldModel->getType());
             return $this->redirect($this->generateUrl('oro_entityextend_field_update', ['id' => $entity->getId()]));
         }
     }
     /** @var ConfigProvider $entityConfigProvider */
     $entityConfigProvider = $this->get('oro_entity_config.provider.entity');
     return ['form' => $form->createView(), 'entity_id' => $entity->getId(), 'entity_config' => $entityConfigProvider->getConfig($entity->getClassName())];
 }
 public function testEvent()
 {
     $entityConfigModel = new EntityConfigModel('Test\\Class');
     $fieldConfigModel = new FieldConfigModel('testField', 'string');
     $fieldConfigModel->setEntity($entityConfigModel);
     $event = new NewFieldConfigModelEvent($fieldConfigModel, $this->configManager);
     $this->assertEquals('Test\\Class', $event->getClassName());
     $this->assertEquals('testField', $event->getFieldName());
     $this->assertEquals('string', $event->getFieldType());
     $this->assertEquals($this->configManager, $event->getConfigManager());
 }
 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'));
 }
 /**
  * {@inheritdoc}
  */
 public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (!isset($data['type'], $data['fieldName'], $data['entity']['id'])) {
         throw new UnexpectedValueException('Data does not contain required properties: type, fieldType or entity_id');
     }
     $fieldType = $data['type'];
     $fieldName = $data['fieldName'];
     $entity = $this->getEntityConfigModel($data['entity']['id']);
     $fieldModel = new FieldConfigModel($fieldName, $fieldType);
     $fieldModel->setEntity($entity);
     $options = [];
     foreach ($data as $key => $value) {
         $this->extractAndAppendKeyValue($options, $key, $value);
     }
     $this->updateModelConfig($fieldModel, $options);
     return $fieldModel;
 }
Exemple #5
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());
 }
 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());
 }
 /**
  * @Route("/create/{id}", name="oro_entityextend_field_create", requirements={"id"="\d+"}, defaults={"id"=0})
  * Acl(
  *      id="oro_entityextend_field_create",
  *      label="Create custom field",
  *      type="action",
  *      group_name=""
  * )
  *
  * @Template
  */
 public function createAction(EntityConfigModel $entity)
 {
     /** @var ExtendManager $extendManager */
     $extendManager = $this->get('oro_entity_extend.extend.extend_manager');
     if (!$extendManager->isExtend($entity->getClassName())) {
         $this->get('session')->getFlashBag()->add('error', $entity->getClassName() . 'isn\'t extend');
         return $this->redirect($this->generateUrl('oro_entityconfig_fields', array('id' => $entity->getId())));
     }
     $newFieldModel = new FieldConfigModel();
     $newFieldModel->setEntity($entity);
     $form = $this->createForm('oro_entity_extend_field_type', $newFieldModel, array('class_name' => $entity->getClassName()));
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST') {
         $form->submit($request);
         if ($form->isValid()) {
             $request->getSession()->set(sprintf(self::SESSION_ID_FIELD_NAME, $entity->getId()), $newFieldModel->getFieldName());
             $request->getSession()->set(sprintf(self::SESSION_ID_FIELD_TYPE, $entity->getId()), $newFieldModel->getType());
             return $this->redirect($this->generateUrl('oro_entityextend_field_update', array('id' => $entity->getId())));
         }
     }
     /** @var ConfigProvider $entityConfigProvider */
     $entityConfigProvider = $this->get('oro_entity_config.provider.entity');
     return array('form' => $form->createView(), 'entity_id' => $entity->getId(), 'entity_config' => $entityConfigProvider->getConfig($entity->getClassName()));
 }
 protected function createFieldConfigModel(EntityConfigModel $entityConfigModel, $fieldName, $fieldType, $mode = ConfigModel::MODE_DEFAULT)
 {
     $result = new FieldConfigModel($fieldName, $fieldType);
     $result->setEntity($entityConfigModel);
     $result->setMode($mode);
     return $result;
 }
 public function testCreateFieldModel()
 {
     $entityModel = $this->createEntityModel(self::TEST_ENTITY);
     $expectedResult = new FieldConfigModel(self::TEST_FIELD, 'int');
     $expectedResult->setMode(ConfigModelManager::MODE_DEFAULT);
     $expectedResult->setEntity($entityModel);
     $this->createRepositoryMock([$entityModel], [UnitOfWork::STATE_MANAGED, UnitOfWork::STATE_MANAGED, UnitOfWork::STATE_MANAGED]);
     $result = $this->configModelManager->createFieldModel(self::TEST_ENTITY, self::TEST_FIELD, 'int', ConfigModelManager::MODE_DEFAULT);
     $this->assertEquals($expectedResult, $result);
     // test that the created model is stored in a local cache
     $this->assertSame($result, $this->configModelManager->getFieldModel(self::TEST_ENTITY, self::TEST_FIELD));
 }
 /**
  * @param FieldConfigModel $field
  * @return $this
  */
 public function addField($field)
 {
     $field->setEntity($this);
     $this->fields->add($field);
     return $this;
 }