/** * @SuppressWarnings(PHPMD.LongVariable) * * @param PreLoadEventArgs $eventArgs * @param string $field * @param array $mapping */ protected function preLoadEmbeddedWithDiscriminator(PreLoadEventArgs $eventArgs, $field, $mapping) { $unhydratedDoc = $eventArgs->getData(); if (isset($unhydratedDoc[$field])) { $documentManager = $eventArgs->getDocumentManager(); $eventManager = $documentManager->getEventManager(); if ($mapping['type'] === 'one') { $discriminatorFieldValue = $unhydratedDoc[$field][$mapping['discriminatorField']]; $embeddedClassName = $mapping['discriminatorMap'][$discriminatorFieldValue]; $targetMetadata = $documentManager->getClassMetadata($embeddedClassName); $readEventArgs = $this->getReadEventArgs($targetMetadata, $eventManager); if ($readEventArgs->getReject()) { $eventArgs->getData()[$field] = null; } } else { $unhydratedEmbeddedDoc = $unhydratedDoc[$field]; foreach ($unhydratedEmbeddedDoc as $i => $embeddedDoc) { $discriminatorFieldValue = $embeddedDoc[$mapping['discriminatorField']]; $embeddedClassName = $mapping['discriminatorMap'][$discriminatorFieldValue]; $targetMetadata = $documentManager->getClassMetadata($embeddedClassName); $readEventArgs = $this->getReadEventArgs($targetMetadata, $eventManager); if ($readEventArgs->getReject()) { $eventArgs->getData()[$field][$i] = null; } } } } }
/** @ODM\PreLoad */ public function preLoad(PreLoadEventArgs $e) { $data =& $e->getData(); if (isset($data['name'])) { $e = explode(' ', $data['name']); $data['firstName'] = $e[0]; $data['lastName'] = $e[1]; } }
public function testGetData() { $document = new Group('test'); $dm = $this->dm; $data = array('id' => '1234', 'name' => 'test'); $eventArgs = new PreLoadEventArgs($document, $dm, $data); $eventArgsData =& $eventArgs->getData(); $this->assertEquals('test', $eventArgsData['name']); $eventArgsData['name'] = 'alt name'; $this->assertEquals('alt name', $data['name']); }