protected function addProperty(Nextras\Orm\Entity\Reflection\PropertyMetadata $metadata) { $component = parent::addProperty($metadata); switch ($metadata->name) { case 'key': $component->setOption('unique', TRUE); } return $component; }
public function setValues($values, $erase = FALSE) : Ytnuk\Orm\Form\Container { $container = parent::setValues($values, $erase); $link = $this->entity->menu->link; $link->module = 'Shop:Category'; if (!$link->parameters->get()->getBy(['key' => $key = current($this->repository->getEntityMetadata()->getPrimaryKey())])) { $linkParameter = new Ytnuk\Link\Parameter\Entity(); $linkParameter->key = $key; $linkParameter->value = $this->entity->getPersistedId() ?: $this->repository->persist($this->entity)->getPersistedId(); $link->parameters->add($linkParameter); } return $container; }
protected function addProperty(Nextras\Orm\Entity\Reflection\PropertyMetadata $metadata) { $component = parent::addProperty($metadata); if ($component instanceof Nette\Forms\Controls\BaseControl) { switch ($metadata->name) { case 'post': case 'category': $component->setOption('unique', TRUE); break; case 'primary': $component->setOption('unique', 'post'); break; } } return $component; }
public function setValues($values, $erase = FALSE) : parent { $translates = iterator_to_array($this['translates']->getComponents()); array_walk($translates, function (Ytnuk\Translation\Translate\Form\Container $container, string $locale) use(&$values) { if (!$container->values->value) { $this['translates']->removeComponent($container); $container->removeEntity(); unset($values['translates'][$locale]); } }); $container = parent::setValues($values, $erase); $parent = $this->lookup(parent::class, FALSE); if ($parent instanceof parent && !(array) $values['translates']) { $this->removeEntity(); if ($parent->getMetadata()->getProperty($this->getName())->isNullable) { $parent->removeEntity(); } } return $container; }