/** * Edit article * * @return ViewModel */ public function editAction() { $em = $this->getEntityManager(); $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { return $this->redirect()->toRoute('blog', array('action' => 'add')); } try { $article = $em->getRepository('Blog\\Entity\\Article')->findOneById($id); } catch (\Exception $e) { return $this->redirect()->toRoute('blog', array('action' => 'add')); } $form = new ArticleForm($em); $form->bind($article); $request = $this->getRequest(); if ($request->isPost()) { $form->setInputFilter($article->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $author = $em->getRepository('User\\Entity\\User')->findOneById($article->getAuthor()); $article->setAuthor($author); $em->persist($article); $em->flush(); return $this->redirect()->toRoute('blog'); } } return new ViewModel(array('form' => $form)); }