/** * Pre set data event handler * * @param FormEvent $event */ public function preSetData(FormEvent $event) { $form = $event->getForm(); $configModel = $form->getConfig()->getOption('config_model'); if (!$configModel instanceof FieldConfigModel) { return; } if (!in_array($configModel->getType(), ['enum', 'multiEnum'])) { return; } $enumConfig = $configModel->toArray('enum'); if (empty($enumConfig['enum_code'])) { // new enum - a form already has a all data because on submit them are not removed from a config return; } $enumCode = $enumConfig['enum_code']; $data = $event->getData(); $data['enum']['enum_name'] = $this->translator->trans(ExtendHelper::getEnumTranslationKey('label', $enumCode)); $enumValueClassName = ExtendHelper::buildEnumValueClassName($enumCode); $enumConfigProvider = $this->configManager->getProvider('enum'); if ($enumConfigProvider->hasConfig($enumValueClassName)) { $enumEntityConfig = $enumConfigProvider->getConfig($enumValueClassName); $data['enum']['enum_public'] = $enumEntityConfig->get('public'); $data['enum']['enum_options'] = $this->enumSynchronizer->getEnumOptions($enumValueClassName); } $event->setData($data); }
public function testGetEnumOptions() { $enumValueClassName = 'Test\\EnumValue'; $values = [['id' => 'opt1']]; $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock(); $this->doctrine->expects($this->once())->method('getManagerForClass')->with($enumValueClassName)->will($this->returnValue($em)); $enumRepo = $this->getMockBuilder('Oro\\Bundle\\EntityExtendBundle\\Entity\\Repository\\EnumValueRepository')->disableOriginalConstructor()->getMock(); $em->expects($this->once())->method('getRepository')->with($enumValueClassName)->will($this->returnValue($enumRepo)); $qb = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock(); $enumRepo->expects($this->once())->method('createQueryBuilder')->with('e')->will($this->returnValue($qb)); $query = $this->getMockBuilder('Doctrine\\ORM\\AbstractQuery')->disableOriginalConstructor()->setMethods(['setHint', 'getArrayResult'])->getMockForAbstractClass(); $qb->expects($this->once())->method('select')->with('e.id, e.priority, e.name as label, e.default as is_default')->will($this->returnSelf()); $qb->expects($this->once())->method('orderBy')->with('e.priority')->will($this->returnSelf()); $qb->expects($this->once())->method('getQuery')->will($this->returnValue($query)); $query->expects($this->once())->method('setHint')->with(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker')->will($this->returnSelf()); $query->expects($this->once())->method('getArrayResult')->will($this->returnValue($values)); $result = $this->synchronizer->getEnumOptions($enumValueClassName); $this->assertEquals($values, $result); }