public function addAction() { $entityManager = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default'); //Vérifie le type de la requête $form = new PageForm(); $request = $this->getRequest(); //Initialise la liste des categories $categories = $this->getEntityManager()->getRepository('Cms\\Entity\\Category')->findAll(); $options = array("" => ""); foreach ($categories as $cat) { $options[$cat->getCtgrId()] = $cat->getCtgrName(); } $form->setCategories($options); $menus = $this->getEntityManager()->getRepository('Cms\\Entity\\Menu')->findAll(); $articles = $this->getEntityManager()->getRepository('Cms\\Entity\\Article')->findAll(); $options = array("" => ""); foreach ($menus as $menu) { $options[$menu->getMenuId()] = $menu->getMenuName(); } // $form->setMenus($options); if ($request->isPost()) { $form->setInputFilter(new PageFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $data = $form->getData(); unset($data['submit']); $this->getPagesTable()->insert($data); return $this->redirect()->toRoute('cms/default', array('controller' => 'page', 'action' => 'index')); } } return array('form' => $form, 'articles' => $articles, 'menus' => $menus); }
/** * Edit page * * * @access public * @uses PageForm * * @return ViewModel */ public function editAction() { $variables = array(); $id = $this->params('id'); $pageModel = $this->getServiceLocator()->get('CMS\\Model\\Page'); $query = $this->getServiceLocator()->get('wrapperQuery'); $pageObj = $query->find('CMS\\Entity\\Page', $id); $request = $this->getRequest(); if (!$request->isPost()) { // extract body data to be able to display it in it's natural form $pageObj->body = $pageObj->getBody(); } $options = array(); $options['query'] = $query; $form = new PageForm(null, $options); // removing unpublish button in case of already unpublished page if ($pageObj->getStatus() == \Utilities\Service\Status::STATUS_INACTIVE) { $form->remove(FormButtons::UNPUBLISH_BUTTON); $form->getInputFilter()->remove(FormButtons::UNPUBLISH_BUTTON); } $form->bind($pageObj); if ($request->isPost()) { $data = array_merge_recursive($request->getPost()->toArray(), $request->getFiles()->toArray()); $form->setInputFilter($pageObj->getInputFilter($query)); $form->setData($data); $pageModel->setFormRequiredFields($form, $data, true); if ($form->isValid()) { $pageModel->save($pageObj, $data, true); $url = $this->getEvent()->getRouter()->assemble(array('action' => 'index'), array('name' => 'cmsPage')); $this->redirect()->toUrl($url); } } $formViewHelper = new FormViewHelper(); $this->setFormViewHelper($formViewHelper); $variables['id'] = $id; $variables['pageForm'] = $this->getFormView($form); $variables['pressReleaseType'] = PageTypes::PRESS_RELEASE_TYPE; return new ViewModel($variables); }