code: public function successMain(Form $form) : void
      {
          if ($this->presenter->isAjax() && $this->presenter->user->isAllowed(StructureAuthorizator::RES_STRUCTURE_MODAL))
          {
              $recipeSlug = $this->getRecipeSlug();
              $structure = $this->getStructure();
              $values = $form->getValues();
  
              $createdAt = new DateTime($values->createdAt);
              $parent = ($values->parent > 0) ? $this->structureRepository->findOneById($values->parent) : NULL;
  
              $this->structureManager->getConnection()->beginTransaction();
  
              try
              {
                  $structure = $this->structureManager->save(
                      $structure,
                      $recipeSlug,
                      $this->user,
                      $parent,
                      $createdAt
                  );
  
                  $diffCategories = $this->structureInCategoryManager->makeDiff($structure, $values->categories);
                  $this->structureManager->saveCategories($structure, $diffCategories);
  
                  $this->structureManager->getConnection()->commit();
  
                  $parents = $this->getParentsExceptSubParents();
  
                  $form->getComponent('parent')->setItems($parents);
                  $form->getComponent('updatedAt')->setValue($structure->getUpdatedAt()->format(self::FORMAT_DATETIME));
  
                  $this->presenter->notificationAjax(
                      'Nastavení aktualizováno',
                      'Další nastavení bylo aktualizováno.',
                      'success',
                      FALSE
                  );
  
                  $this->onSaveMain();
              }
              catch (\Exception $exception)
              {
                  $this->structureManager->getConnection()->rollBack();
                  throw $exception;
              }
          }
      }
docs: Success - main form
  @param Form $form
  @throws \Exception