/** * Get all attribute ids of a metamodel. * * @param \DataContainer $dataContainer The data container driver. * * @return array */ public function getAttributes($dataContainer) { $options = array(); if ($dataContainer->activeRecord) { $layer = LayerModel::findByPk($dataContainer->activeRecord->pid); if (!$layer) { return $options; } $name = $this->metaModelsFactory->translateIdToMetaModelName($layer->metamodel); $metaModel = $this->metaModelsFactory->getMetaModel($name); if ($metaModel) { foreach ($metaModel->getAttributes() as $attribute) { $options[$attribute->get('id')] = $attribute->getName(); } } } return $options; }
/** * Test to add an attribute factory to a factory and retrieve it again. * * @return void */ public function testGetMetaModelNameFromId() { $serviceContainer = $this->mockServiceContainer(); $factory = new Factory(); $factory->setServiceContainer($serviceContainer); $serviceContainer->getEventDispatcher()->addListener(GetMetaModelNameFromIdEvent::NAME, function (GetMetaModelNameFromIdEvent $event) { $event->setMetaModelName('mm_with_id_' . $event->getMetaModelId()); }); $this->assertSame('mm_with_id_10', $factory->translateIdToMetaModelName(10)); $factory->getMetaModel('mm_test'); }