/**
  * 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));
 }
 /**
  * @see \Zend\ServiceManager\FactoryInterface::createService()
  * @param  \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator
  * @return \Blog\Form\ArticleForm
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $entityManager = $serviceLocator->get('Doctrine\\ORM\\EntityManager');
     $form = new ArticleForm($entityManager);
     return $form->setInputFilter(new ArticleInputFilter());
 }