Diskuze: Nette + Kdyby/Doctrine místo update provede insert
Zobrazeno 2 zpráv z 2.
Ježíší, já jsem slepej. Celou dobu vytvářím nový objekt a nehledám existující. Takto je to správně.
/**
* Metoda pro ukladani
* @param \Nette\Application\UI\Form $form
*/
public function saveMenu(\Nette\Application\UI\Form $form)
{
// Hodnoty formulare
$values = $form->getForm()->getValues();
// zkusime najit existujici entitu
$menu = $this->entityManager->getRepository(\App\Model\Menu::getClassname())->findOneBy(['id'=>$values->id]);
// pokud je hodnota null, vytvoříme si nový objekt menu
if($menu === null)$menu = new \App\Model\Menu();
// Persistujeme aby s nim mohl em pracovat
$this->entityManager->persist($menu);
// Pri editaci nastavujeme id
if(isset($values->id))$menu->setId($values->id);
// Nalezeni entity rodice dle jeho id
$parent = $this->entityManager->getRepository(\App\Model\Menu::getClassname())->findOneBy(['id'=>$values->parent_id]);
$menu->setParentId(empty($parent)?null:$parent);// Nastaveni parent_id
$menu->setTitle($values->title);// Nastaveni titulku
$menu->setOrdering($values->ordering); // Nastaveni razeni
$menu->setDivider($values->divider?true:false); // Nastaveni oddelovace
$menu->setVisible($values->visible?true:false); // Nastaveni viditelnosti
$menu->setSource($values->source); // Nastaveni zdroje
try
{
$this->entityManager->flush(); // Ulozime vsechny zmeny do db
$this->flashMessage("Uloženo", 'success');
$this->handleResetVars(); // Smazeme vsechny pers. parametry presenteru
}
catch (Exception $ex)
{
}
}
Zobrazeno 2 zpráv z 2.