/** * @param bool $asArray * @return array|\movi\Model\IdentifiedEntity[]|\Nette\ArrayHash */ public function getValues($asArray = FALSE) { $values = parent::getValues(false); foreach ($values as $id => $selected) { if ($selected) { $this->selected[$id] = $this->items[$id]; } } return $this->selected; }
public function process() { if ($this->component instanceof IControl && $this->component->isOmitted()) { return; } $data = $this->component instanceof MultiChoiceControl ? $this->component->getValue() : $this->component->getValues(TRUE); $associationMapping = $this->wrappedEntity->getMetadata()->getAssociationMapping($this->component->name); $this->type = $associationMapping['type']; $targetEntityMetadata = $this->entityManager->getClassMetadata($associationMapping['targetEntity']); $this->processIdentifier($targetEntityMetadata); $this->prepareCollection(); $targetEntityRepository = $this->entityManager->getRepository($associationMapping['targetEntity']); foreach ($data as $rowKey => $row) { $newEntity = NULL; if (is_array($row)) { $values = $this->getIdentifierValues($row); if ($values && !($newEntity = $this->popByIdentifier($values)) && $this->type == ClassMetadata::MANY_TO_MANY) { $newEntity = $targetEntityRepository->findOneBy($values); } if (!$newEntity) { $newEntity = $targetEntityMetadata->newInstance(); } $this->mapper->saveValues($this->component[$rowKey], $newEntity); } elseif ($row) { $currentValue = $this->component instanceof MultiChoiceControl ? $row : $rowKey; if (!$this->popByIdentifier([$currentValue])) { $newEntity = $targetEntityRepository->find($currentValue); } } if ($newEntity) { $this->addEntity($newEntity); } } foreach ($this->forRemoval as $entityForRemove) { $this->collection->removeElement($entityForRemove); } $this->mapper->execute(function () { $this->updateCollection(); }); $this->validate(); }
/** * Returns the values submitted by the form. * @return Nette\ArrayHash|array */ public function getValues($asArray = FALSE) { $values = parent::getValues($asArray); unset($values[self::TRACKER_ID], $values[self::PROTECTOR_ID]); return $values; }
/** * @param WrappedEntity $wrappedEntity * @param Container $component * @param array $association * @return null|object */ protected function getRelatedEntity(WrappedEntity $wrappedEntity, Container $component, $association) { $relatedEntity = $wrappedEntity->getValue($component->name); if ($relatedEntity === NULL) { $className = $association['targetEntity']; $entityManager = $wrappedEntity->getEntityManager(); $metadata = $entityManager->getClassMetadata($className); $identifierFields = $metadata->identifier; $data = $component->getValues(TRUE); $relatedEntityIdentifier = $this->getIdentifierFromArray($identifierFields, $data); if ($relatedEntityIdentifier) { $repository = $entityManager->getRepository($className); $relatedEntity = $repository->find($relatedEntityIdentifier); } if (!$relatedEntity) { $relatedEntity = $metadata->newInstance(); } } return $relatedEntity; }
/** * @param bool $asArray * @return array|\Nette\Utils\ArrayHash */ public function getValues($asArray = FALSE) { if (!$this->resetKeys) { return parent::getValues($asArray); } $values = array_values(parent::getValues(TRUE)); return $asArray ? $values : ArrayHash::from($values); }