/** * Create new page * * * @access public * @uses Page * @uses PageForm * * @return ViewModel */ public function newAction() { $variables = array(); $pageModel = $this->getServiceLocator()->get('CMS\\Model\\Page'); $query = $this->getServiceLocator()->get('wrapperQuery')->setEntity('CMS\\Entity\\Page'); $pageObj = new Page(); $options = array(); $options['query'] = $query; $form = new PageForm(null, $options); $request = $this->getRequest(); 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, false); if ($form->isValid()) { $data = $form->getData(FormInterface::VALUES_AS_ARRAY); $pageModel->save($pageObj, $data, false); $url = $this->getEvent()->getRouter()->assemble(array('action' => 'index'), array('name' => 'cmsPage')); $this->redirect()->toUrl($url); } } $formViewHelper = new FormViewHelper(); $this->setFormViewHelper($formViewHelper); $variables['pageForm'] = $this->getFormView($form); $variables['pressReleaseType'] = PageTypes::PRESS_RELEASE_TYPE; return new ViewModel($variables); }