/** * @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; }
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; }