public function editAction() { $squadID = $this->params('id', 0); $squadRepo = $this->getEntityManager()->getRepository('Frontend\\Squads\\Entity\\Squad'); /** @var \Frontend\Squads\Entity\Squad $squadEntity */ $squadEntity = $squadRepo->findOneBy(array('user' => $this->identity(), 'id' => $squadID)); if (!$squadEntity) { $this->flashMessenger()->addErrorMessage('Squad not found'); return $this->redirect()->toRoute('frontend/user/squads'); } $squadEntityOriginal = clone $squadEntity; $form = new SquadForm(); $form->setEntityManager($this->getEntityManager()); $form->init(); $form->bind($squadEntity); if ($this->getRequest()->isPost()) { $form->setData(array_merge_recursive($_POST, $_FILES)); if ($form->isValid()) { /** @var \Frontend\Squads\Entity\Squad $squad */ $squad = $form->getData(); $squad->setUser($this->getEntityManager()->getReference('Auth\\Entity\\Benutzer', $this->identity()->getId())); $squadImageService = $this->getServiceLocator()->get('SquadImageService'); $uploadedLogoSpecs = $squad->getLogo(); // delete logo if ($this->getRequest()->getPost('deleteLogo', 0) == 1 && $squadEntityOriginal->getLogo()) { $squadImageService->deleteLogo($squadEntityOriginal->getLogo()); $squad->setLogo(null); } else { // no logo change $squad->setLogo($squadEntityOriginal->getLogo()); } // set new logo? if ($uploadedLogoSpecs && $uploadedLogoSpecs['error'] != 4) { // delete old first if ($squadEntityOriginal->getLogo()) { $squadImageService->deleteLogo($squadEntityOriginal->getLogo()); } $squadLogoID = $squadImageService->saveLogo($uploadedLogoSpecs); if ($squadLogoID !== false) { $squad->setLogo($squadLogoID); } else { $squad->setLogo(null); } } $this->getEntityManager()->merge($squad); $this->getEntityManager()->flush(); $this->flashMessenger()->addSuccessMessage('Squad successfully edited!'); return $this->redirect()->refresh(); } else { $form->populateValues($this->getRequest()->getPost()); } } $viewModel = new ViewModel(); $viewModel->setTemplate('/squads/edit.phtml'); $viewModel->setVariable('form', $form); return $viewModel; }