public function addAction() { $viewModel = new ViewModel(); $form = $this->getServiceLocator()->get('Admin\\Form\\CustomerForm'); $request = $this->getRequest(); if ($request->isPost()) { $customer = new Customer(); $form->setInputFilter($customer->getInputFilter()); $form->setData($request->getPost()); $data = $request->getPost()->toArray(); $emails = array(); if (isset($data['emails'])) { foreach (array_filter($data['emails']) as $email) { if (preg_match("/([\\w\\-]+\\@[\\w\\-]+\\.[\\w\\-]+)/", $email)) { $emails[] = $email; } } $data['emails'] = json_encode($emails); } if (isset($data['addresses'])) { $data['addresses'] = json_encode(array_filter($data['addresses'])); } if (isset($data['phones'])) { $data['phones'] = json_encode(array_filter($data['phones'])); } $document = $data['identification']; $documentTypeId = $data['identification_type']; $classifications = $data['classification']; $dbAdapter = $this->getServiceLocator()->get('Zend\\Db\\Adapter\\Adapter'); $documentCompositeKeyValidator = new DocumentCompositeKeyValidator(array('adapter' => $dbAdapter, 'documentTypeId' => $documentTypeId)); $documentCompositeKeyValidatorResult = !$documentCompositeKeyValidator->isValid($document); $form->setData($data); if ($form->isValid() && $documentCompositeKeyValidatorResult) { $customer->exchangeArray($form->getData()); $customerId = $this->getCustomerTable()->save($customer); $this->getCustomerClassificationTable()->save($customerId, $classifications); return $this->redirect()->toRoute('admin/customer'); } else { $viewModel->setVariable('emails', json_decode($data['emails'])); $viewModel->setVariable('addresses', json_decode($data['addresses'])); $viewModel->setVariable('phones', json_decode($data['phones'])); $form->get("identification")->setMessages(array('error' => $documentCompositeKeyValidator->getMessage())); } } $viewModel->setVariables(array('form' => $form, 'config' => $this->config)); return $viewModel; }