public function handle($name, array $options, ClassMetadata $classMetadata, Configuration $configuration) { if (!empty($options['control'])) { return NULL; } if (!($mapping = MetadataHelpers::getAssociationMapping($classMetadata, $name, ClassMetadata::ONE_TO_ONE))) { return NULL; } $targetMetadata = $this->entityManager->getDao($mapping['targetEntity'])->getClassMetadata(); return new ContainerBuilder($targetMetadata, new Container(), $configuration); }
public function handle($name, array $options, ClassMetadata $classMetadata, Configuration $configuration) { if (!($mapping = MetadataHelpers::getAssociationMapping($classMetadata, $name, ClassMetadata::MANY_TO_MANY))) { return NULL; } $options += ['control' => ControlFactory::MULTI_SELECT_BOX, 'fill' => TRUE]; $control = ControlFactory::create($options['control'], ['\\Nette\\Forms\\Controls\\MultiChoiceControl'], ControlFactory::MULTI_SELECT_BOX); if (empty($options['caption'])) { $control->caption = $configuration->getLabelingStrategy()->getControlLabel($name, $classMetadata); } else { $control->caption = $options['caption']; } $this->fillOptions($options, $control, $mapping); return new ControlBuilder($control); }
public function handle($name, array $options, ClassMetadata $classMetadata, Configuration $configuration) { if (!($mapping = MetadataHelpers::getAssociationMapping($classMetadata, $name, [ClassMetadata::MANY_TO_ONE, ClassMetadata::ONE_TO_ONE]))) { return NULL; } $options += ['control' => ControlFactory::SELECT_BOX, 'fill' => TRUE]; $control = ControlFactory::create($options['control'], self::$allowedControls, ControlFactory::SELECT_BOX); if (empty($options['caption'])) { $control->caption = $configuration->getLabelingStrategy()->getControlLabel($name, $classMetadata); } else { $control->caption = $options['caption']; } if ($control instanceof ChoiceControl) { $this->setPrompt($options, $control, $mapping); $this->fillOptions($options, $control, $mapping); } return new ControlBuilder($control); }
public function handle($name, array $options, ClassMetadata $classMetadata, Configuration $configuration) { if (!($mapping = MetadataHelpers::getAssociationMapping($classMetadata, $name, ClassMetadata::ONE_TO_MANY))) { return NULL; } $options += ['createDefault' => 0]; $dao = $this->entityManager->getDao($mapping['targetEntity']); $containerPrototype = new Container(); $replicator = new ClonnableReplicator(function (Container $container) use($containerPrototype) { $clone = function (Container $targetContainer, Container $sourceContainer) use(&$clone) { /** @var IComponent $component */ foreach ($sourceContainer->getComponents() as $component) { if ($component instanceof Container && !$component instanceof ClonnableReplicator) { /** @var Container $component */ $container = new Container(); $container->setCurrentGroup($component->getCurrentGroup()); $container->onValidate = $component->onValidate; $targetContainer[$component->getName()] = $container; $clone($container, $component); } else { $targetContainer[$component->getName()] = $control = clone $component; if ($control instanceof BaseControl) { $clonner = function () { /** @var BaseControl $this */ $this->control = clone $this->control; $this->label = clone $this->label; }; $clonner = $clonner->bindTo($control, $control); $clonner(); } } } }; $clone($container, $containerPrototype); }, $options['createDefault']); return new ReplicatorBuilder($dao->getClassMetadata(), $replicator, $configuration, $containerPrototype); }